C++17

2018년 기준으로 C++17은 C++의 ISO/IEC 14882 표준 중 가장 최신 개정판이다.

역사

C++ 표준 위원회가 표준 출시 주기를 3년으로 고정하기 전까지 C++17의 출시일은 불명확했다. 그 동안 C++17 개정판은 C++1z으로 불리기도 했었는데, 이는 C++11이 C++0x나 C++1x로 불렸었고 C++14이 C++1y로 불렸던 것과 같은 이치이다. C++17의 사양은 2017년 3월에 Draft International Standard (DIS)까지 도달했다. 이 DIS는 약간의 수정 요구만을 동반한 채 만장일치로 승인되었으며, 최종 표준이 2017년 12월에 출시되었다. C++ 표준 템플릿 라이브러리에는 약간의 추가 사항만 있다. <algorithm> 헤더의 몇몇 알고리즘들에 명시적 병렬화 기능이 생겼으며, 문법의 개선이 이루어졌다.

다음 표준

제거된 기능

이번 C++ 개정판에는 몇몇 기능이 제거되기도 하였다.

새로운 기능

C++17는 많은 새 기능을 선보인다. 다음 목록은 완전하지 않을 수 있다.

언어

라이브러리

컴파일러 지원

같이 보기

참조

각주

  1. ↑ “N4661 Editors' Report -- Programming Languages -- C++”. 2017년 3월 21일. 2017년 3월 21일에 확인함.
  2. ↑ “ISO/IEC DIS 14882: Programming Languages — C++” (PDF). 2017년 3월 25일에 원본 문서 (PDF)에서 보존된 문서.
  3. ↑ Herb Sutter. “C++17 is formally approved”.
  4. ↑ “ISO/IEC 14882:2017”.
  5. ↑ https://herbsutter.com/2016/06/30/trip-report-summer-iso-c-standards-meeting-oulu/ "the next standard after C++17 will be C++20"
  6. ↑ “Current Status : Standard C++”.
  7. ↑ “Trip Report: C++ Standards Meeting in Toronto, July 2017”. 2017년 8월 2일. 2018년 1월 11일에 확인함.
  8. ↑ IBM comment on preparing for a Trigraph-adverse future in C++17, IBM paper N4210, 2014-10-10. Authors: Michael Wong, Hubert Tong, Rajan Bhakta, Derek Inglis
  9. ↑ “N4190: Removing auto_ptr, random_shuffle(), And Old <functional> Stuff (Stephan T. Lavavej)”.
  10. ↑ “N3928: Extending static_assert, v2 (Walter E. Brown)” (PDF).
  11. ↑ “N4051: Allow typename in a template template parameter (Richard Smith)”.
  12. ↑ “N3922: New Rules for auto deduction from braced-init-list (James Dennett)”.
  13. ↑ “Updates to my trip report”.
  14. ↑ “N4230: Nested namespace definition (Robert Kawulak, Andrew Tomazos)”.
  15. ↑ “N4266: Attributes for namespaces and enumerators (Richard Smith)”.
  16. ↑ “N4640: Working Draft, Standard for Programming Language C++” (PDF). 193–195쪽.
  17. ↑ “N4267: Adding u8 character literals (Richard Smith)”.
  18. ↑ Thomas Köppe. “Hexadecimal floating literals for C++”.
  19. ↑ “N4659: Working Draft, Standard for Programming Language C++” (PDF). §5.13.4.
  20. ↑ “N4268: Allow constant evaluation for all non-type template arguments (Richard Smith)”.
  21. ↑ “N4295: Folding expressions (Andrew Sutton, Richard Smith)”.
  22. ↑ “N4659: Working Draft, Standard for Programming Language C++” (PDF). §9.4.1.
  23. ↑ “N4659: Working Draft, Standard for Programming Language C++” (PDF). §11.5.
  24. ↑ “If statement with initializer”.
  25. ↑ “Dynamic memory allocation for over-aligned data”.
  26. ↑ “N4640: Working Draft, Standard for Programming Language C++” (PDF). 431–433쪽.
  27. ↑ “C++ Keywords: register”.
  28. ↑ “N4659: Working Draft, Standard for Programming Language C++” (PDF). §19.8.
  29. ↑ “N4259: Wording for std::uncaught_exceptions (Herb Sutter)” (PDF).
  30. ↑ “New core language papers adopted for C++17”.
  31. ↑ “N4284: Contiguous Iterators (Jens Maurer)”.
  32. ↑ “Filesystem Library Proposal (Beman Dawes)”.
  33. ↑ “The Parallelism TS Should be Standardized”.
  34. ↑ “C++ Standards Support in GCC - GNU Project - Free Software Foundation (FSF)”. 《gcc.gnu.org》.
  35. ↑ “Chapter 1. Status”. 《gcc.gnu.org》.
  36. ↑ “Clang - C++17, C++14, C++11 and C++98 Status”. 《clang.llvm.org》.
  37. ↑ corob-msft. “Visual C++ Language Conformance”. 《docs.microsoft.com》.
  38. ↑ “Announcing: MSVC Conforms to the C++ Standard”.