본문 바로가기
IT/C++

[C++] C++ 표준화 버전 정리

by 웃는펭귄 2025. 3. 16.

 

C++ 역사

1998년 C++98이 출시된 이후로 큰 업데이트가 없다가, 2011년에 C++11이 소개되면서 새로운 기능과 개선 사항을 도입하여 언어를 현대화하고 현대 소프트웨어 개발 방식에 맞추었기 때문이다. 그렇기에 사람들은 C++11을 "Modern C++"라고 부른다. 


 

C++98/02

  • 1998년에 표준화, 2003년에 수정 적용
    C++ 최초의 표준화. 일반적인 C++ 코딩 내용이 대부분 포함.

C++11/14

  • 2011년 표준화, 2014년 추가로 개선되어 발표
    이때부터 모던 C++이라고 불리게 됨.
  • C++11 표준을 시작으로 여러 최신 기능들을 추가. C++11 및 그 이후의 표준인 C++14, 17 등을 묶어 모던 C++이라고 부름.

C++17

  • 이전 버전에서 C++ STL(Standard Template Library)의 추가 수정, 알고리즘 헤더의 몇몇 알고리즘 명시적 병렬화 기능 문법적 개선.
  • 제거된 기능: std::auto_ptr, std::random_shuffle, 오래된 함수 어댑터와 같이 사용 중단된 표준 라이브러리의 타입과 함수 제거

 

 

 

버전별 개선점

C++ 11:

  • Auto 키워드를 사용한 자동 타입 추론
  • 람다 표현식을 사용한 인라인 함수 객체
  • Range-based for loop을 사용한 반복 처리
  • 멀티스레딩 지원을 위한 Thread 라이브러리
  • Move semantics을 사용한 효율적인 리소스 관리
  • nullptr 키워드를 사용한 null 포인터 값
  • 자동 메모리 관리를 위한 스마트 포인터 (unique_ptr, shared_ptr, weak_ptr)
  •  

C++ 14:

    • 템플릿화된 함수 호출 연산자를 갖는 람다 표현식을 위한 Generic lambdas
    • 템플릿 변수를 위한 Variable templates
    • 일반 함수에서의 반환 타입 추론
    • constexpr 함수 개선 (변수 및 함수 템플릿)
    • 이진 리터럴과 숫자 구분자를 사용한 가독성 향상
    • 함수 및 타입을 표시하기 위한 [[deprecated]] 속성

 

C++17

  • 구조화된 바인딩을 위한 Structured bindings
  • 컴파일 타임 조건문을 위한 constexpr if
  • 가변 인자 템플릿 메타 프로그래밍을 위한 Fold expressions
  • 클래스 템플릿의 인수 추론
  • 중첩된 네임스페이스 정의를 통한 보다 간결하고 구조화된 네임스페이스 사용
  • 표준 라이브러리 개선 (예: std::optional, std::variant)

 

 

C++ 11에 추가된 기능 정리 : https://wecandev.tistory.com/81 

 

C++11 에 추가된 기능 정리

C++ 11 C++ 11에서 추가된 기능들을 정리하고자 한다. 1. auto 컴파일 시에 자동으로 타입을 정해주는 키워드 auto i = 10; // i는 int 타입 auto l = 10L; // i는 long 타입 auto* pi = &i; // i는 int* 타입 auto* pc = new My

wecandev.tistory.com

 

C++ 14에 추가된 기능 정리 : https://wecandev.tistory.com/82

 

C++14 에 추가된 기능 정리

C++14 C++ 14의 새로운 기능들을 정리하고자 한다. 1. Binary literal Binary literal은 2진법 숫자를 나타내는 표기법이다. 기존의 16진수 앞에 0x가 붙은것처럼 2진수 앞에는 0b가 붙는다. 또한 ' 문자로 숫자

wecandev.tistory.com