C++ 표준의 역사와 주요 기능 변화 정리

gigyesik·2025년 7월 1일

developer-roadmap-c++

목록 보기
15/20

C++ 표준의 역사와 주요 기능 변화 정리

C++는 시대의 요구에 맞게 꾸준히 발전해온 언어다. 이 글에서는 각 C++ 표준 버전이 언제 나왔고, 어떤 주요 기능들이 추가되었는지를 간결하게 정리해본다. C++ 개발자로서 어느 버전을 사용하는지, 어떤 기능을 쓸 수 있는지를 정확히 아는 건 매우 중요하다.

목차

  1. C++ 표준이란?
  2. C++98 / C++03
  3. C++11 (C++0x)
  4. C++14
  5. C++17
  6. C++20
  7. 마치며

1. C++ 표준이란?

C++ 표준은 ISO(국제표준화기구)에서 관리하며, 언어의 문법, 의미론, 표준 라이브러리 등을 정의한다. 새로운 표준이 나올수록 언어는 더 강력하고 현대적인 방향으로 발전해왔다.


2. C++98 / C++03

  • C++98: 최초의 공식 표준. 템플릿, 예외 처리, STL 등 도입.
  • C++03: C++98의 버그 수정 및 소규모 개선 버전.

3. C++11 (C++0x)

모던 C++의 시작이라 불린다.

주요 기능

  • auto 타입 추론
auto x = 10; // int로 추론

	•	범위 기반 for 루프

for (int n : vec) { std::cout << n; }

	•	람다 함수

auto add = [](int a, int b) { return a + b; };

	•	스마트 포인터

std::unique_ptr<int> ptr = std::make_unique<int>(10);nullptr / rvalue 참조 / move semantics
	•	멀티스레드 표준 라이브러리

std::thread t([](){ std::cout << "Thread"; });
t.join();

4. C++14

C++11을 다듬은 마이너 업그레이드

주요 기능

  • 제네릭 람다
auto add = [](auto a, auto b) { return a + b; };
  • 이진 리터럴
int b = 0b1010;
  • decltype(auto), 변수 템플릿 등 추가

5. C++17

더 간결하고 읽기 쉬운 코드 작성을 위한 개선

주요 기능

  • 초기화가 포함된 if 문
if (auto it = map.find(key); it != map.end()) { ... }
  • 구조화된 바인딩
auto [key, value] = std::pair{"A", 1};
  • if constexpr, fold expressions, inline 변수
  • 표준 파일 시스템 (std::filesystem)
  • std::optional, std::variant, std::string_view 등 유틸리티 타입 도입
  • 병렬 알고리즘

6. C++20

C++의 대규모 리뉴얼. 더욱 강력해진 템플릿, 범위 기반 프로그래밍, 비동기 처리까지

주요 기능

  • Concepts
template<typename T>
concept Addable = requires (T a, T b) {
    { a + b } -> std::same_as<T>;
};
  • Ranges
auto evens = numbers | std::views::filter([](int n) { return n % 2 == 0; });
  • Coroutines
std::future<int> async_value(int x) {
    co_return x * 2;
}
  • constexpr, consteval 확장
  • 람다 템플릿 파라미터, std::format, constinit, consteval

  1. 마치며

C++ 표준은 단순히 문법 변화가 아니라 프로그래밍 패러다임의 진화를 보여주는 지표다. 현재 사용하는 컴파일러가 어떤 버전을 지원하는지, 각 표준이 도입한 기능들을 잘 알고 활용하는 것이 중요하다.


💬 함께 보면 좋은 자료

profile
Server Dev

0개의 댓글