C++11

정식 명칭 ISO/IEC 14882:2001. C++의 최신 버전으로, 본래는 2000년대에 발표할 것을 염두에 두고 C++0x라고 불렀으나 표준화 과정이 지연에 지연을 거듭하며 C++0x를 C++1x로 바꿔야 할 판이 되었다. 이걸 두고 Bjarne Stroustrup이 0x가 그 0x가 아니라 16진수 리터럴이라고 농을 친 적이 있다. 1) 최종적으로는 2011년 10월 국제 표준으로 출판되었다.

가장 크게 보이는 변경점들:

  • auto 키워드와 decltype() 타입 생성자. (후자는 원래 typeof였지만 벤더마다 의미가 제각각이라고 이름을 아예…)
  • nullptr 키워드.
  • 가변 인자 템플릿. 사실상 튜플을 언어의 일부로 넣는 것에 거의 대응됨.
  • 템플릿 문법에서 닫는 > >>>로 써도 오류가 나지 않음.
  • 익명 함수 문법 지원. 클로저는 선택적으로 사용할 수도 있고 하지 않을 수도 있다.
  • 객체 생성 문법의 대규모 추가. 대표적으로 std::initializer_list{…}를 사용한 일반적 초기화 문법이 있다.
  • 함수·클래스 정의에 몇 가지 변화. 를 사용한 타입 선언이나, = default 등의 기본 생성자 정의, enum class 따위.
  • 문자열 리터럴이 쓸데 없이 복잡해짐.

이제 C++는 앞으로 10년동안 더 가장 배우기 어려운 언어의 위치를 고수할 수 있어! 다행히도 C++ export는 이번 표준에서 아예 사라진다.

1) C++0x FAQ 참고.

도쿠위키DokuWiki-custom(rev 9085d92e02)을 씁니다.
마지막 수정 2011-12-26 06:54 | 작성자 lifthrasiir