반응형

C++20 5

C++20 Concepts 알아보기 (1)

환영합니다, Rolling Ress의 카루입니다. ​ 오늘은 C++20에 드디어 추가된 concept에 대하여 알아보겠습니다. 템플릿 매개변수에 제약을 거는 거죠. ​ concept이란, 템플릿을 사용할 때 일정한 타입들을 묶어주는 기능이라고 생각하는 게 편합니다. 타입 이름에 별칭을 붙여주는 동시에, 그 자체로 bool값을 가지게 되죠. 에 있는 is_same_v 와 같이 ~_v 변수랑 비슷하다고 보시면 됩니다. 다만, 변수가 아니라 타입으로 쓸 수 있습니다. ​ 선언은 이렇게 합니다. template //반드시 template 필요 concept 컨셉이름 = bool값의 식 또는 requires 구문 // Concepts TS 시절에는 아래와 같은 구문도 지원했으나, 이제는 지원하지 않습니다. // ..

[C++ 심화 강좌] C++20 <=> Three-way 비교 연산자

환영합니다, Rolling Ress의 카루입니다. ​ 사실 작성한 건 3월...? 정도인데, 어쩌다가 이제서야 올리는지...아무튼 시작하겠습니다. 드디어 이걸 포스팅하는 날이 오네요. 제가 이해하는데도 상당한 시간이 걸린, Three-way Comparsion Operator 입니다. 이건 다른 것보다 클래스에서 비교 연산자를 만들 때 특히 도움이 되겠더라고요. , =, ==, != 정의할 필요 없이 auto operator 한방이면 끝납니다. ​ 일단 이게 무엇인지는 알아야겠죠. 그 전에, 중학교 3학년 수학에서 배우셨을 법한 실수의 대소비교에 대해서 알아보도록 하겠습니다. ​두 실수 a, b에 대해 반드시 위 세 가지 중 하나가 성립하죠. 한 실수에서 다른 실수를 뺀 값을 0과 비교하면 크기를 알 수..

[C++심화 강좌] C++20 모듈 사용하기

환영합니다, Rolling Ress의 카루입니다. ​ 처음에는 무척 기다렸고 신기한 기능이었는데, 막상 추가가 되니까 생각보다 별 감흥이 없네요. 아니면 요즘 제가 UWP 앱 개발 중이라 C#에 너무 에너지를 쏟고 있는 탓인지도 모릅니다. 비주얼스튜디오에서 C#을 사용할 땐 정말 막강한 인텔리센스를 제공하죠. ​ 그래서 말인데, 오늘 할 얘기도 인텔리센스에 관해 먼저 이야기하겠습니다. 우선 몇 년 전과는 달리 최근에는 모듈 지원이 대폭 강화되면서 ixx 파일에 대한 인텔리센스도 제공이 됩니다. 심지어 모듈을 import 한 후에도 인텔리센스가 되긴 되는데, 클래스 내부 멤버들까지는 모르는 것 같아요. 컴파일은 잘 되는데 소스 편집기에서 빨간 줄이 사라지지 않는 요상한 상황이 발생합니다. ​ 아무튼, 아실..

[카루의 C++강좌] 0. 시작하며 & 목차

안녕하세요! 카루입니다. C++도 다 같은 C++이 아니라는 것 알고 계시죠? C++의 역사를 살펴보자면, 처음에 공식으로 승인된 표준안 ISO/IEC 14882:1998 (약칭 C++98) 을 시작으로 C++의 공식 표준안이 시작이 되죠. 그 후 별로 변한 게 없던 C++03이 나오고, 2007년 TR1 (테크니컬 리포트)가 제정되면서 슬슬 변하기 시작합니다. 마침내 2011년 8월 12일, ISO/IEC 14882:2011, C++11이라는 이름으로 완전히 새롭게 변한 C++이 제정되었고, 현재 대부분의 책도 C++11을 기준으로 설명합니다. 이 이후로 3년에 한 번씩 업데이트가 진행되면서 C++14에서 사소한 개선이 되다가, 또다시 C++17을 거치면서 크게 변하고, 마침내 2020년 현재 C++2..

반응형