Namespaces
Variants

History of C++

From cppreference.net
C++ language
General topics
Flow control
Conditional execution statements
Iteration statements (loops)
Jump statements
Functions
Function declaration
Lambda function expression
inline specifier
Dynamic exception specifications ( until C++17* )
noexcept specifier (C++11)
Exceptions
Namespaces
Types
Specifiers
constexpr (C++11)
consteval (C++20)
constinit (C++20)
Storage duration specifiers
Initialization
Expressions
Alternative representations
Literals
Boolean - Integer - Floating-point
Character - String - nullptr (C++11)
User-defined (C++11)
Utilities
Attributes (C++11)
Types
typedef declaration
Type alias declaration (C++11)
Casts
Memory allocation
Classes
Class-specific function properties
Special member functions
Templates
Miscellaneous
History of C++

목차

초기 C++

  • 1979년: C with Classes 최초 구현
  1. 새로운 기능: classes , member functions , derived classes , 분리 컴파일, public and private access control , friends , 함수 인자 타입 검사, default arguments , inline functions , overloaded assignment operator , constructors , destructors , f ( ) f ( void ) 와 동일, 호출-함수 및 반환-함수 (동기화 기능, C++에는 없음)
  2. 라이브러리: 동시 태스크 라이브러리 (C++에는 없음)
  • 1982년: C with Classes 참조 매뉴얼 발간
  • 1984년: C84 구현, 참조 매뉴얼 발간
  • 1985년: Cfront 1.0
  1. 새로운 기능: virtual functions , 함수 및 operator overloading , references , new delete 연산자, 키워드 const , 범위 지정 연산자
  2. 라이브러리 추가사항: 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
  1. 새로운 기능: 다중 상속 , 멤버 포인터 , protected 접근 제어 , 타입 안전 링크, 추상 클래스 , static const 한정 멤버 함수, 클래스별 new delete
  2. 라이브러리 추가사항: I/O 조작자
  • 1990: The Annotated C++ Reference Manual

이 책은 아직 구현되지 않은 일부 기능을 포함하여 설계된 대로의 언어를 설명했습니다. ISO 표준이 제정되기 전까지 사실상의 표준 역할을 했습니다.

  1. 새로운 기능: 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)
  1. 새로운 기능: RTTI ( dynamic_cast , typeid ), 공변 반환 타입 , 캐스트 연산자 , mutable , bool , 조건문 내 선언, 템플릿 인스턴스화 , 멤버 템플릿 , export
  2. 라이브러리 추가사항: 로캘 , bitset , valarray , auto_ptr , 템플릿화된 문자열 , I/O 스트림 , 그리고 복소수 .
  3. STL 기반: 컨테이너 , 알고리즘 , 반복자 , 함수 객체
  • 1998: The C++ Programming Language, 3rd edition
  • 1999: Boost 가 위원회 구성원들에 의해 설립되어 표준을 위한 새로운 고품질 후보 라이브러리들을 생산함
  • 2003: C++03 (ISO/IEC 14882:2003)

이는 기술적 정오표에 불과한 사소한 개정판이었습니다. 이 개정판에서는 value initialization 의 정의를 도입합니다.

C++03에서 수정된 결함 보고서 (92개 코어, 125개 라이브러리)

이 TR은 다양한 C++ 추상화의 비용을 논의하고, 구현 지침을 제공하며, 임베디드 시스템에서 C++ 사용을 논의하고 C의 ISO/IEC TR 18037:2008 <iohw.h> 에 대한 <hardware> 인터페이스를 소개합니다.

이 TR은 C++ 라이브러리 확장으로, C++ 표준 라이브러리에 다음을 추가합니다:

  1. 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 .
  2. 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에 포함되었으며, 사소한 변경 사항이 있습니다.

이 국제 표준은 C++ 표준 라이브러리 확장으로, TR1의 일부였으나 C++11에 포함되지 않았던 특수 함수들을 추가합니다: 타원 적분, 지수 적분, 라게르 다항식, 르장드르 다항식, 에르미트 다항식, 베셀 함수, 노이만 함수, 베타 함수, 리만 제타 함수. 이 표준은 C++17에 통합되었습니다 .

C++11 시기

주요 문서: C++11

기존 관행을 표준화하고 C++ 프로그래머가 사용할 수 있는 추상화를 개선하기 위해 많은 변경 사항이 도입되었습니다

이 TR은 IEEE 754-2008 부동 소수점 연산 표준의 십진 부동 소수점 타입들을 구현합니다: std::decimal::decimal32 , std::decimal::decimal64 , 그리고 std::decimal::decimal128 .

C++14 기간

주요 문서: C++14

C++ 표준의 사소한 개정

이 TS는 boost.filesystem V3를 기반으로 한 파일시스템 라이브러리를 지정하는 실험적인 C++ 라이브러리 확장입니다(일부 수정 및 확장 포함). 이 TS는 C++17에 통합되었습니다.

이 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에 통합되었습니다.

이 TS는 C++ 라이브러리를 확장하여 여러 확장 기능 을 포함합니다. 이는 std::future , latches barriers , 그리고 atomic smart pointers에 대한 것입니다.

C++17 기간

주요 문서: C++17

C++11 이후 C++ 표준의 주요 개정판

이 TS는 C++ 라이브러리를 확장하여 ranges 를 포함하며, 이는 이터레이터 쌍을 대체하는 새로운 더 강력한 추상화와 함께 range views, sentinel ranges, 실시간 변환을 위한 projections, 새로운 이터레이터 어댑터 및 알고리즘을 제공합니다. 이 확장으로 인해 벡터를 sort ( v ) ; 로 정렬하는 것이 마침내 가능해졌습니다.

이 TS는 C++ 코어 언어와 표준 라이브러리를 확장하여 스택리스 코루틴(재개 가능 함수)을 포함합니다. 여기에는 키워드 co_await , co_yield , 그리고 co_return 이 추가됩니다.

이 TS는 C++ 라이브러리를 확장하여 boost.asio 기반의 TCP/IP 네트워킹을 포함합니다.

이 TS는 C++ 코어 언어를 확장하여 모듈을 포함합니다. 여기에는 특수 식별자인 module , import 가 추가되며, 새로운 의미로 키워드 export 가 재도입됩니다.

이 TS는 C++ 라이브러리를 확장하여 두 가지 새로운 실행 정책( unseq vec ), reduction_plus 또는 for_loop_strided 와 같은 추가 병렬 알고리즘, 병렬 작업의 분기 및 조인을 위한 태스크 블록, SIMD 타입 및 해당 타입에 대한 연산을 포함합니다.

C++20 기간

주요 문서: C++20

C++17 이후의 주요 C++ 표준 개정판

이 TS는 변수, 열거형, 클래스 및 그 멤버, 람다 및 그 캡처 등과 같은 프로그램 엔티티를 검사할 수 있는 기능으로 C++을 확장합니다.

향후 개발

주요 문서: C++23

C++ 표준의 다음 주요 개정판

참고 항목

C 문서 C 역사 참조

외부 링크

1. C++의 역사: 1979-1991
2. 현실 세계에서 그리고 현실 세계를 위한 언어의 진화: C++ 1991-2006
3. 복잡하고 변화하는 세계에서 번성하기: C++ 2006-2020
4. 표준 C++ 재단
5. 위키백과의 C++
6. C++ 표준 위원회