C++17
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
C++17은 2017년 12월에 출시된 C++ 프로그래밍 언어의 표준 개정판이다. C++17은 C++11과 C++14에 이어 3년 주기로 릴리스되는 표준의 일환으로, 트라이그래프, 일부 더 이상 사용되지 않는 기능, `register` 키워드 등이 제거되었다. 새로운 기능으로는 언어적 측면에서 `static_assert` 개선, 템플릿 및 attribute 추가, UTF-8 문자 리터럴, 16진수 부동소수점 리터럴 지원 등이 있으며, 라이브러리 측면에서는 `
더 읽어볼만한 페이지
- 프로그래밍 언어 표준 - ISO/IEC JTC 1/SC 22
ISO/IEC JTC 1/SC 22는 프로그래밍 언어, 환경 및 시스템 소프트웨어 인터페이스 분야의 표준화를 담당하는 ISO/IEC JTC 1의 하위 위원회이며, 다양한 프로그래밍 언어와 시스템 소프트웨어 인터페이스의 표준화를 목표로 1985년에 설립되었다. - 프로그래밍 언어 표준 - C99
C99는 1999년 ISO/IEC 9899:1999로 출판된 C 프로그래밍 언어의 표준으로, 인라인 함수, 가변 길이 배열, `//` 주석 등 새로운 기능들을 추가하고 IEEE 부동소수점 자료 지원을 개선했으며 C90과 하위 호환성을 가지면서 C++와의 호환성을 고려했다. - C++ - 헤더 파일
헤더 파일은 프로그래밍 언어에서 코드 재사용성, 모듈화, 컴파일 시간 단축에 기여하며 함수 프로토타입, 변수 선언 등을 포함하고 `#include` 지시어로 소스 코드에 포함되어 사용되는 파일이다. - C++ - 소멸자 (컴퓨터 프로그래밍)
소멸자는 객체가 메모리에서 제거되기 직전에 호출되는 멤버 함수로, 객체 자원 해제 및 정리 작업을 수행하며, C++ 등 여러 언어에서 구현되고 메모리 누수 방지에 기여한다. - 프로그래밍 언어 - 다중 패러다임 프로그래밍 언어
다중 패러다임 프로그래밍 언어는 둘 이상의 프로그래밍 패러다임을 지원하며, 다양한 프로그래밍 스타일을 혼합하여 사용할 수 있도록 설계되었다. - 프로그래밍 언어 - 모조 (프로그래밍 언어)
모조는 모듈러사에서 개발한 파이썬과 유사한 구문의 고성능 프로그래밍 언어로, AI 애플리케이션 개발에 초점을 맞추고 러스트의 영향을 받은 메모리 안전성을 제공하며 향후 오픈 소스로 전환될 예정이다.
C++17 | |
---|---|
C++17 | |
표준 | ISO/IEC 14882:2017 |
발표일 | 2017년 12월 15일 |
이전 표준 | C++14 |
후속 표준 | C++20 |
다른 이름 | C++1z |
2. 역사
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, 초안 국제 표준)까지 도달했다.[82][83] 이 DIS는 약간의 수정 요구만을 동반한 채 만장일치로 승인되었으며,[84] 최종 표준이 2017년 12월에 출시되었다.[85] C++ 표준 템플릿 라이브러리에는 약간의 추가 사항만 있는데, `
트라이그래프가 제거되었다.[44][45][89]
C++17에는 다음과 같은 많은 새로운 기능이 도입되었다.
2. 1. 다음 표준
C++20[86][87][88]
3. 제거된 기능
std::auto_ptr
, std::random_shuffle
및 이전 함수 어댑터를 포함하여 일부 더 이상 사용되지 않는 형식과 함수가 표준 라이브러리에서 제거되었다.[8][46][90][57][58] 이는 C++11에서 std::unique_ptr
, std::shuffle
, std::bind
및 람다와 같은 개선된 기능으로 대체되었다. 스토리지 클래스 지정자로 키워드를 사용하는 것이 제거되었다.[47][59] 이 키워드는 여전히 예약되어 있지만 현재는 사용되지 않는다.
4. 새로운 기능
4. 1. 언어
4. 2. 라이브러리
5. 컴파일러 지원
GCC 8은 완전하면서도 시험적으로 C++17을 지원한다.[115][116][48] Clang 5 이상 버전은 모든 C++17 기능을 지원한다.[117][49] Visual Studio 2017 15.7 (MSVC19.14)은 거의 전부를 지원하며,[118][119] 15.8(MSVC 19.15) 이상 버전은 모든 C++17 언어 기능을 지원한다.[50][51]
6. 라이브러리 지원
libstdc++는 버전 9.1부터 C++17에 대한 완전한 지원을 제공한다(병렬 처리 TS가 없고 C11 대신 C99를 참조하는 8.1).[52] libc++는 버전 9부터 C++17에 대한 부분적인 지원을 제공하며, 나머지는 "진행 중"이다.[53] Visual Studio 2017 15.8(MSVC 19.15) 표준 라이브러리 및 이후 버전은 "기본 문자열 변환"을 제외한 모든 C++17 라이브러리 기능을 지원하며 C11 대신 C99를 참조한다. "기본 문자열 변환"은 Visual Studio 2019 16.4에 추가되었다.[54]
참조
[1]
웹사이트
N4661 Editors' Report -- Programming Languages -- C++
http://www.open-std.[...]
2017-03-21
[2]
웹사이트
ISO/IEC DIS 14882: Programming Languages — C++
http://www.open-std.[...]
[3]
웹사이트
C++17 is formally approved
https://herbsutter.c[...]
2017-09-06
[4]
웹사이트
ISO/IEC 14882:2017
https://www.iso.org/[...]
2017-12-03
[5]
웹사이트
N3928: Extending static_assert, v2 (Walter E. Brown)
http://www.open-std.[...]
2015-04-03
[6]
웹사이트
N4051: Allow typename in a template template parameter (Richard Smith)
http://www.open-std.[...]
2015-04-03
[7]
웹사이트
N3922: New Rules for auto deduction from braced-init-list (James Dennett)
http://www.open-std.[...]
2014-11-28
[8]
웹사이트
Updates to my trip report
http://isocpp.org/bl[...]
2014-11-28
[9]
웹사이트
N4230: Nested namespace definition (Robert Kawulak, Andrew Tomazos)
http://www.open-std.[...]
2014-11-28
[10]
웹사이트
N4266: Attributes for namespaces and enumerators (Richard Smith)
http://isocpp.org/fi[...]
2014-11-15
[11]
웹사이트
N4640: Working Draft, Standard for Programming Language C++
http://www.open-std.[...]
2017-03-09
[12]
웹사이트
N4267: Adding u8 character literals (Richard Smith)
http://isocpp.org/fi[...]
2014-11-15
[13]
웹사이트
Hexadecimal floating literals for C++
http://wg21.link/p02[...]
2017-07-16
[14]
웹사이트
N4659: Working Draft, Standard for Programming Language C++
http://www.open-std.[...]
2017-03-24
[15]
웹사이트
Declaring non-type template parameters with auto
http://www.open-std.[...]
2016-06-23
[16]
웹사이트
N4268: Allow constant evaluation for all non-type template arguments (Richard Smith)
http://isocpp.org/fi[...]
2014-11-15
[17]
웹사이트
N4295: Folding expressions (Andrew Sutton, Richard Smith)
http://isocpp.org/fi[...]
2014-11-15
[18]
웹사이트
N4659: Working Draft, Standard for Programming Language C++
http://www.open-std.[...]
2017-03-24
[19]
웹사이트
N4659: Working Draft, Standard for Programming Language C++
http://www.open-std.[...]
2017-03-24
[20]
웹사이트
Selection statements with initializer
http://www.open-std.[...]
2018-10-09
[21]
웹사이트
Dynamic memory allocation for over-aligned data
http://www.open-std.[...]
2017-03-13
[22]
웹사이트
Class template argument deduction
https://en.cpprefere[...]
2019-01-30
[23]
웹사이트
CppCon 2018: Timur Doumler "Class template argument deduction in C++17"
https://www.youtube.[...]
2019-01-30
[24]
웹사이트
N4640: Working Draft, Standard for Programming Language C++
http://www.open-std.[...]
2017-03-09
[25]
웹사이트
N4659: Working Draft, Standard for Programming Language C++
http://www.open-std.[...]
2017-03-24
[26]
웹사이트
P0012R1: Make exception specifications be part of the type system, version 5
http://www.open-std.[...]
2018-12-17
[27]
웹사이트
P0018R3: Lambda Capture of *this by Value as [=,*this], version 3
http://www.open-std.[...]
2021-06-21
[28]
웹사이트
Adopt Library Fundamentals V1 TS Components for C++17 (R1)
https://isocpp.org/f[...]
2016-03-23
[29]
웹사이트
Current Status
https://isocpp.org/s[...]
[30]
웹사이트
std::basic_string_view - cppreference.com
http://en.cppreferen[...]
2016-06-23
[31]
웹사이트
N4259: Wording for std::uncaught_exceptions (Herb Sutter)
http://isocpp.org/fi[...]
2014-11-15
[32]
웹사이트
New core language papers adopted for C++17
https://isocpp.org/b[...]
2014-11-15
[33]
웹사이트
N4279: Improved insertion interface for unique-key maps (Thomas Köppe)
https://isocpp.org/f[...]
2014-11-15
[34]
웹사이트
New standard library papers adopted for C++17
https://isocpp.org/b[...]
2014-11-15
[35]
웹사이트
N4280: Non-member size() and more (Riccardo Marcangelo)
https://isocpp.org/f[...]
2014-11-15
[36]
웹사이트
N4284: Contiguous Iterators (Jens Maurer)
https://isocpp.org/f[...]
2014-11-15
[37]
웹사이트
Filesystem Library Proposal (Beman Dawes)
http://www.open-std.[...]
2015-12-12
[38]
웹사이트
The Parallelism TS Should be Standardized
https://isocpp.org/f[...]
2016-03-23
[39]
웹사이트
Mathematical Special Functions for C++17, v5
https://isocpp.org/f[...]
2016-03-23
[40]
웹사이트
N4659: Working Draft, Standard for Programming Language C++
http://www.open-std.[...]
2017-03-24
[41]
웹사이트
A byte type definition
http://open-std.org/[...]
2017-03-25
[42]
웹사이트
N4659: Working Draft, Standard for Programming Language C++
http://www.open-std.[...]
2017-03-24
[43]
웹사이트
PMR (Polymorphic Memory Resources) fully described -- Nico Josuttis
https://isocpp.org/b[...]
2020-11-16
[44]
웹사이트
N3981: Removing trigraphs??! (Richard Smith)
http://www.open-std.[...]
Richard Smith
2015-04-03
[45]
간행물
IBM comment on preparing for a Trigraph-adverse future in C++17
http://www.open-std.[...]
IBM
2018-09-11
[46]
웹사이트
N4190: Removing auto_ptr, random_shuffle(), And Old <functional> Stuff (Stephan T. Lavavej)
http://www.open-std.[...]
2014-11-28
[47]
웹사이트
C++ Keywords: register
https://en.cpprefere[...]
2018-09-03
[48]
웹사이트
C++ Standards Support in GCC - GNU Project - Free Software Foundation (FSF)
https://gcc.gnu.org/[...]
2018-04-03
[49]
웹사이트
Clang - C++17, C++14, C++11 and C++98 Status
https://clang.llvm.o[...]
2018-06-26
[50]
웹사이트
Visual C++ Language Conformance
https://docs.microso[...]
2018-06-19
[51]
웹사이트
Announcing: MSVC Conforms to the C++ Standard
https://blogs.msdn.m[...]
null
2018-05-08
[52]
웹사이트
Chapter 1. Status
https://gcc.gnu.org/[...]
2018-06-19
[53]
웹사이트
libc++ C++17 Status
http://libcxx.llvm.o[...]
2019-05-24
[54]
웹사이트
Announcing: MSVC Conforms to the C++ Standard
https://devblogs.mic[...]
2019-05-24
[55]
웹사이트
N3981: Removing trigraphs??! (Richard Smith)
http://www.open-std.[...]
Richard Smith
2015-04-03
[56]
문서
IBM comment on preparing for a Trigraph-adverse future in C++17
http://www.open-std.[...]
IBM
[57]
웹사이트
Updates to my trip report
http://isocpp.org/bl[...]
2014-11-28
[58]
웹사이트
N4190: Removing auto_ptr, random_shuffle(), And Old <functional> Stuff (Stephan T. Lavavej)
http://www.open-std.[...]
2014-11-28
[59]
웹사이트
C++ Keywords: register
https://en.cpprefere[...]
2018-09-03
[60]
웹사이트
N3928: Extending static_assert, v2 (Walter E. Brown)
http://www.open-std.[...]
2015-04-03
[61]
웹사이트
N4051: Allow typename in a template template parameter (Richard Smith)
http://www.open-std.[...]
2015-04-03
[62]
웹사이트
N3922: New Rules for auto deduction from braced-init-list (James Dennett)
http://www.open-std.[...]
2014-11-28
[63]
웹사이트
N4230: Nested namespace definition (Robert Kawulak, Andrew Tomazos)
http://www.open-std.[...]
2014-11-28
[64]
웹사이트
New core language papers adopted for C++17
https://isocpp.org/b[...]
2014-11-15
[65]
웹사이트
N4266: Attributes for namespaces and enumerators (Richard Smith)
http://isocpp.org/fi[...]
2014-11-15
[66]
웹사이트
N4640: Working Draft, Standard for Programming Language C++
http://www.open-std.[...]
2017-03-09
[67]
웹사이트
N4267: Adding u8 character literals (Richard Smith)
http://isocpp.org/fi[...]
2014-11-15
[68]
문서
UTF-8 文字列リテラルは [[C++11#新たな文字列リテラル|C++11]] から存在する。C++17 では一貫性確保のために対応する文字リテラルが追加されるが、その型はchar
型であり、またUTF-8文字リテラルが扱えるコードポイントの範囲は、C0制御文字とラテン基本文字 (C0 Controls and Basic Latin Unicode block) すなわち [[ASCII]] に限定されている。なお、C++標準における従来の文字リテラルは、[[文字符号化方式]]がASCIIであることが保証されないため、UTF-8文字リテラルはASCIIを保証するという移植性の観点からも有用である。
[69]
웹사이트
Hexadecimal floating literals for C++
http://wg21.link/p02[...]
2017-07-16
[70]
웹사이트
N4659: Working Draft, Standard for Programming Language C++
http://www.open-std.[...]
2017-07-16
[71]
웹사이트
N4268: Allow constant evaluation for all non-type template arguments (Richard Smith)
http://isocpp.org/fi[...]
2014-11-15
[72]
웹사이트
N4295: Folding expressions (Andrew Sutton, Richard Smith)
http://isocpp.org/fi[...]
2014-11-15
[73]
웹사이트
N4659: Working Draft, Standard for Programming Language C++
http://www.open-std.[...]
2017-03-24
[74]
웹사이트
N4659: Working Draft, Standard for Programming Language C++
http://www.open-std.[...]
2017-03-24
[75]
웹사이트
Selection statements with initializer
http://www.open-std.[...]
2018-10-09
[76]
웹사이트
Dynamic memory allocation for over-aligned data
http://www.open-std.[...]
2017-03-14
[77]
웹사이트
Class template argument deduction
https://en.cpprefere[...]
2019-01-30
[78]
웹사이트
CppCon 2018: Timur Doumler “Class template argument deduction in C++17”
https://www.youtube.[...]
2019-01-30
[79]
웹사이트
N4640: Working Draft, Standard for Programming Language C++
http://www.open-std.[...]
2017-03-11
[80]
웹사이트
N4659: Working Draft, Standard for Programming Language C++
http://www.open-std.[...]
2017-03-24
[81]
웹사이트
P0012R1: Make exception specifications be part of the type system, version 5
http://www.open-std.[...]
2018-12-17
[82]
웹인용
N4661 Editors' Report -- Programming Languages -- C++
http://www.open-std.[...]
2017-03-21
[83]
웹인용
ISO/IEC DIS 14882: Programming Languages — C++
http://www.open-std.[...]
[84]
웹인용
C++17 is formally approved
https://herbsutter.c[...]
[85]
웹인용
ISO/IEC 14882:2017
https://www.iso.org/[...]
[86]
뉴스
the next standard after C++17 will be C++20
https://herbsutter.c[...]
[87]
웹인용
Current Status : Standard C++
https://isocpp.org/s[...]
[88]
웹인용
Trip Report: C++ Standards Meeting in Toronto, July 2017
https://botondballo.[...]
2018-01-11
[89]
간행물
IBM comment on preparing for a Trigraph-adverse future in C++17
http://www.open-std.[...]
IBM paper N4210
2014-10-10
[90]
웹인용
N4190: Removing auto_ptr, random_shuffle(), And Old <functional> Stuff (Stephan T. Lavavej)
http://www.open-std.[...]
[91]
웹인용
N3928: Extending static_assert, v2 (Walter E. Brown)
http://www.open-std.[...]
[92]
웹인용
N4051: Allow typename in a template template parameter (Richard Smith)
http://www.open-std.[...]
[93]
웹인용
N3922: New Rules for auto deduction from braced-init-list (James Dennett)
http://www.open-std.[...]
[94]
웹인용
Updates to my trip report
http://isocpp.org/bl[...]
[95]
웹인용
N4230: Nested namespace definition (Robert Kawulak, Andrew Tomazos)
http://www.open-std.[...]
[96]
웹인용
N4266: Attributes for namespaces and enumerators (Richard Smith)
http://isocpp.org/fi[...]
[97]
웹인용
N4640: Working Draft, Standard for Programming Language C++
http://www.open-std.[...]
[98]
웹인용
N4267: Adding u8 character literals (Richard Smith)
http://isocpp.org/fi[...]
[99]
웹인용
Hexadecimal floating literals for C++
http://wg21.link/p02[...]
[100]
웹인용
N4659: Working Draft, Standard for Programming Language C++
http://www.open-std.[...]
[101]
웹인용
N4268: Allow constant evaluation for all non-type template arguments (Richard Smith)
http://isocpp.org/fi[...]
[102]
웹인용
N4295: Folding expressions (Andrew Sutton, Richard Smith)
http://isocpp.org/fi[...]
[103]
웹인용
N4659: Working Draft, Standard for Programming Language C++
http://www.open-std.[...]
[104]
웹인용
N4659: Working Draft, Standard for Programming Language C++
http://www.open-std.[...]
[105]
웹인용
If statement with initializer
http://www.open-std.[...]
[106]
웹인용
Dynamic memory allocation for over-aligned data
http://www.open-std.[...]
[107]
웹인용
N4640: Working Draft, Standard for Programming Language C++
http://www.open-std.[...]
[108]
웹인용
C++ Keywords: register
https://en.cpprefere[...]
[109]
웹인용
N4659: Working Draft, Standard for Programming Language C++
http://www.open-std.[...]
[110]
웹인용
N4259: Wording for std::uncaught_exceptions (Herb Sutter)
http://isocpp.org/fi[...]
[111]
웹인용
New core language papers adopted for C++17
https://isocpp.org/b[...]
[112]
웹인용
N4284: Contiguous Iterators (Jens Maurer)
https://isocpp.org/f[...]
[113]
웹인용
Filesystem Library Proposal (Beman Dawes)
http://www.open-std.[...]
[114]
웹인용
The Parallelism TS Should be Standardized
https://isocpp.org/f[...]
[115]
웹인용
C++ Standards Support in GCC - GNU Project - Free Software Foundation (FSF)
https://gcc.gnu.org/[...]
[116]
웹인용
Chapter 1. Status
https://gcc.gnu.org/[...]
[117]
웹인용
Clang - C++17, C++14, C++11 and C++98 Status
https://clang.llvm.o[...]
[118]
웹인용
Visual C++ Language Conformance
https://docs.microso[...]
[119]
웹인용
Announcing: MSVC Conforms to the C++ Standard
https://blogs.msdn.m[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com