History of C++
목차 |
초기 C++
- 1979년: C with Classes 최초 구현
- 새로운 기능: classes , member functions , derived classes , 분리 컴파일, public and private access control , friends , 함수 인자 타입 검사, default arguments , inline functions , overloaded assignment operator , constructors , destructors , f ( ) 는 f ( void ) 와 동일, 호출-함수 및 반환-함수 (동기화 기능, C++에는 없음)
- 라이브러리: 동시 태스크 라이브러리 (C++에는 없음)
- 1982년: C with Classes 참조 매뉴얼 발간
- 1984년: C84 구현, 참조 매뉴얼 발간
- 1985년: Cfront 1.0
-
새로운 기능:
virtual functions
, 함수 및
operator overloading
,
references
,
new
및
delete
연산자,
키워드
const, 범위 지정 연산자 -
라이브러리 추가사항:
complex number
,
string(AT&T 버전), I/O stream
- 1985: The C++ Programming Language, 1판
- 1986: 다중 상속, 예외 처리, 템플릿을 포함한 남은 설계 목표를 문서화한 "whatis?" 논문
- 1987: GCC 1.15.3의 C++ 지원
- 1989: Cfront 2.0
- 새로운 기능: 다중 상속 , 멤버 포인터 , protected 접근 제어 , 타입 안전 링크, 추상 클래스 , static 및 const 한정 멤버 함수, 클래스별 new 및 delete
- 라이브러리 추가사항: I/O 조작자
- 1990: The Annotated C++ Reference Manual
이 책은 아직 구현되지 않은 일부 기능을 포함하여 설계된 대로의 언어를 설명했습니다. ISO 표준이 제정되기 전까지 사실상의 표준 역할을 했습니다.
- 새로운 기능: namespaces , exception handling , nested classes , templates
- 1991: Cfront 3.0
- 1991: The C++ Programming Language, 2nd edition
표준 C++
- 1990: ANSI C++ 위원회 설립
- 1991: ISO C++ 위원회 설립
- 1992: STL 이 C++로 구현됨
C++98/03 시기
- 1998년: C++98 (ISO/IEC 14882:1998)
-
새로운 기능: RTTI (
dynamic_cast,typeid), 공변 반환 타입 , 캐스트 연산자 ,mutable,bool, 조건문 내 선언, 템플릿 인스턴스화 , 멤버 템플릿 , export - 라이브러리 추가사항: 로캘 , bitset , valarray , auto_ptr , 템플릿화된 문자열 , I/O 스트림 , 그리고 복소수 .
- STL 기반: 컨테이너 , 알고리즘 , 반복자 , 함수 객체
- 1998: The C++ Programming Language, 3rd edition
- 1999: Boost 가 위원회 구성원들에 의해 설립되어 표준을 위한 새로운 고품질 후보 라이브러리들을 생산함
- 2003: C++03 (ISO/IEC 14882:2003)
이는 기술적 정오표에 불과한 사소한 개정판이었습니다. 이 개정판에서는 value initialization 의 정의를 도입합니다.
이 TR은 다양한 C++ 추상화의 비용을 논의하고, 구현 지침을 제공하며, 임베디드 시스템에서 C++ 사용을 논의하고 C의 ISO/IEC TR 18037:2008
<iohw.h>
에 대한
<hardware>
인터페이스를 소개합니다.
이 TR은 C++ 라이브러리 확장으로, C++ 표준 라이브러리에 다음을 추가합니다:
- Boost에서: reference_wrapper , Smart pointers , Member function , result_of , bind , function , Type Traits , Random , Mathematical Special Functions, tuple , array , Unordered Containers (including hash ), and Regular Expressions .
-
C99에서: C99에서 새로 추가된
<math.h>의 수학 함수들, blank character class , Floating-point environment , hexfloat I/O Manipulator, fixed-size integral types ,long long타입, va_copy , snprintf() 와 vfscanf() 함수군들, 그리고 printf() 와 scanf() 함수군들을 위한 C99 변환 지정자들.
특수 함수를 제외한 TR1의 모든 내용이 C++11에 포함되었으며, 사소한 변경 사항이 있습니다.
- 2010: 수학 특수 함수 (ISO/IEC 29124:2010) ( ISO Store ) ( 2010 draft )
이 국제 표준은 C++ 표준 라이브러리 확장으로, TR1의 일부였으나 C++11에 포함되지 않았던 특수 함수들을 추가합니다: 타원 적분, 지수 적분, 라게르 다항식, 르장드르 다항식, 에르미트 다항식, 베셀 함수, 노이만 함수, 베타 함수, 리만 제타 함수. 이 표준은 C++17에 통합되었습니다 .
C++11 시기
- 2011년: C++11 (ISO/IEC 14882:2011) ( ISO Store ) ( 2012년 발행 후 초안 ).
기존 관행을 표준화하고 C++ 프로그래머가 사용할 수 있는 추상화를 개선하기 위해 많은 변경 사항이 도입되었습니다
이 TR은 IEEE 754-2008 부동 소수점 연산 표준의 십진 부동 소수점 타입들을 구현합니다:
std::decimal::decimal32
,
std::decimal::decimal64
, 그리고
std::decimal::decimal128
.
- 2012: The Standard C++ Foundation 설립
- 2013: The C++ Programming Language, 4판
C++14 기간
- 2014: C++14 ( ISO 스토어 ) ( ANSI 스토어 ) ( 2014 최종 초안 )
C++ 표준의 사소한 개정
이 TS는 boost.filesystem V3를 기반으로 한 파일시스템 라이브러리를 지정하는 실험적인 C++ 라이브러리 확장입니다(일부 수정 및 확장 포함). 이 TS는 C++17에 통합되었습니다.
- 2015: 병렬성 TS를 위한 확장 (ISO/IEC TS 19570:2015) ( ISO Store ) ( 2015 draft )
이 TS는 모든 표준 라이브러리 알고리즘에 대한 병렬 및 벡터-병렬 API를 표준화하며,
reduce
,
transform_reduce
,
exclusive_scan
과 같은 새로운 알고리즘들을 추가합니다. 이 TS는 C++17에 통합되었습니다.
이 TS는 C++ 코어 언어에 동기화 및 원자적 블록과 트랜잭션-세이프 함수를 확장하여 트랜잭셔널 메모리 의미론을 구현합니다.
이 TS는 C++ 표준 라이브러리에 여러 새로운 구성 요소를 추가합니다: optional , any , string_view , sample , search , apply , polymorphic allocators , 그리고 variable templates for type traits. 이 TS는 C++17에 통합되었습니다.
이 TS는 개념(명명된 타입 요구사항)과 제약조건(템플릿, 함수, 변수 선언에서 허용되는 타입에 대한 제한)을 통해 C++ 코어 언어를 확장하며, 이는 메타프로그래밍을 지원하고 템플릿 인스턴스화 진단을 단순화합니다. 자세한 내용은 concepts 를 참조하십시오. 이 TS는 일부 생략된 내용과 함께 C++20에 통합되었습니다.
- 2016: 동시성 TS 확장 (ISO/IEC TS 19571:2016) ( ISO Store ) ( 2015 draft )
이 TS는 C++ 라이브러리를 확장하여 여러 확장 기능 을 포함합니다. 이는 std::future , latches 와 barriers , 그리고 atomic smart pointers에 대한 것입니다.
C++17 기간
- 2017: C++17 ( ISO 스토어 ) ( ANSI 스토어 ) ( n4659 2017-03-21 최종 초안 )
C++11 이후 C++ 표준의 주요 개정판
- 2017: Ranges TS 확장 (ISO/IEC TS 21425:2017) ( ISO Store ) ( 2017 draft )
이 TS는 C++ 라이브러리를 확장하여 ranges 를 포함하며, 이는 이터레이터 쌍을 대체하는 새로운 더 강력한 추상화와 함께 range views, sentinel ranges, 실시간 변환을 위한 projections, 새로운 이터레이터 어댑터 및 알고리즘을 제공합니다. 이 확장으로 인해 벡터를 sort ( v ) ; 로 정렬하는 것이 마침내 가능해졌습니다.
- 2017: 코루틴 TS 확장 (ISO/IEC TS 22277:2017) ( ISO Store ) ( 2017 draft )
이 TS는 C++ 코어 언어와 표준 라이브러리를 확장하여 스택리스 코루틴(재개 가능 함수)을 포함합니다. 여기에는 키워드 co_await , co_yield , 그리고 co_return 이 추가됩니다.
- 2018: 네트워킹 TS 확장 (ISO/IEC TS 19216:2018) ( ISO Store ) ( 2017 draft )
이 TS는 C++ 라이브러리를 확장하여 boost.asio 기반의 TCP/IP 네트워킹을 포함합니다.
- 2018: 모듈 TS 확장 (ISO/IEC TS 21544:2018) ( ISO Store ) ( 2018 draft )
이 TS는 C++ 코어 언어를 확장하여 모듈을 포함합니다. 여기에는 특수 식별자인 module , import 가 추가되며, 새로운 의미로 키워드 export 가 재도입됩니다.
이 TS는 C++ 라이브러리를 확장하여 두 가지 새로운 실행 정책( unseq 과 vec ), reduction_plus 또는 for_loop_strided 와 같은 추가 병렬 알고리즘, 병렬 작업의 분기 및 조인을 위한 태스크 블록, SIMD 타입 및 해당 타입에 대한 연산을 포함합니다.
C++20 기간
- 2020: C++20 ( ISO 스토어 ) (최종 초안 n4860 2020-03-31 )
C++17 이후의 주요 C++ 표준 개정판
이 TS는 변수, 열거형, 클래스 및 그 멤버, 람다 및 그 캡처 등과 같은 프로그램 엔티티를 검사할 수 있는 기능으로 C++을 확장합니다.
향후 개발
- 실험적 기술 사양
- 2026: C++ 최신 초안 n5008 (2025-03-15)
C++ 표준의 다음 주요 개정판
참고 항목
|
C 문서
의
C 역사
참조
|
외부 링크
| 1. | C++의 역사: 1979-1991 |
| 2. | 현실 세계에서 그리고 현실 세계를 위한 언어의 진화: C++ 1991-2006 |
| 3. | 복잡하고 변화하는 세계에서 번성하기: C++ 2006-2020 |
| 4. | 표준 C++ 재단 |
| 5. | 위키백과의 C++ |
| 6. | C++ 표준 위원회 |