반응형

C++17 3

[C++17] 템플릿 인자를 생략한다? Deduction Guide

​1부터 10까지 저장하는 배열을 하나 생성해보죠. int nArray[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; 아니면 간단히 int arr[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; // C++11에는 중괄호를 두 번씩 써야 함: {{1, 2, 3 ... 10}} std::array array{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 그런데, 자료형이 모두 int이고 그 개수가 10개라는건 뻔히 알 수 있습니다. 굳이 이 필요할까요? ​ 그래서 C++17에서는 Deduction Guide라는 것을 사용합니다. 만약에, 우리가 어떤 (템플릿) 클래스를 만드는데, 생성자의 매개변수가 문자열일때, char*가 아닌 std::string으로 받..

C++ 2020.03.21

C++17 주요 기능 정리 (1) - 유용한 기능 편

이 글의 모든 예제 코드는 C++17 이상에서만 동작합니다. (GCC 7-8, MSVC 19.14) Nested namespace definition 중첩 네임스페이스 정의 만약 여러분이 outer라는 네임스페이스를 만들고 그 안에 inner라는 네임스페이스를 만든다면 namespace outer { namespace inner { // 어쩌구 저쩌구 } } 일반적으로 이렇게 작성하시겠죠, 하지만 이렇게 두줄이나 낭비할 필요가 있을까요? outer 네임스페이스는 inner 네임스페이스를 제외하면 '빈공간' 입니다. 굳이 중괄호를 두번씩 쓸 필요가 없겠죠. C++17에는 Nested namespace definition이 있습니다. namespace outer::inner { // 어쩌구 저쩌구 } 훨씬 ..

C++ 2020.03.21

[카루의 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..

반응형