C++ 표준 변화 정리 – C++98부터 C++20까지 핵심 기능 한눈에 보기

2025. 7. 1. 11:17Developer Roadmap/C++

반응형

C++ 표준 변화 정리 – C++98부터 C++20까지 핵심 기능 한눈에 보기

C++ 언어는 계속해서 발전해왔다. 특히 C++11 이후로는 현대적인 문법과 라이브러리 기능들이 대거 추가되면서 '모던 C++'이라고도 불린다. 이 글에서는 C++98부터 C++20까지 각 표준이 어떤 변화를 거쳐왔는지 정리해보았다.

C++ 표준이란?

C++ 표준은 ISO(국제표준화기구)에서 관리하며, 문법과 기능, 라이브러리 등 언어의 전체 사양을 정의한다. 표준은 여러 플랫폼과 컴파일러에서 일관된 동작을 보장하기 위해 필수적이다.


C++98 / C++03

  • C++98: 최초의 공식 표준. 템플릿, 예외 처리, STL 도입.
  • C++03: 버그 수정 및 성능 개선 위주의 마이너 업데이트.

C++11 (C++0x)

현대적인 C++의 시작점. 많은 개발자들이 C++11부터 본격적으로 사용하는 경우가 많다.

주요 기능

  • auto를 통한 타입 추론
  • 람다 표현식
  • 스마트 포인터 (shared_ptr, unique_ptr)
  • nullptr, move semantics, rvalue references
  • std::thread를 포함한 멀티스레드 표준화

C++14

C++11의 개선 버전. 안정성과 편의성을 높인 기능들이 추가되었다.

주요 기능

  • 제네릭 람다
  • 이진 리터럴 (0b1101)
  • decltype(auto)
  • 변수 템플릿

C++17

표현력과 코드 가독성을 높여주는 기능이 다수 추가되었다.

주요 기능

  • if/switch 초기화 문법
  • 구조화된 바인딩 (auto [a, b] = pair)
  • if constexpr, fold expression
  • std::filesystem, std::optional, std::variant, std::string_view
  • 병렬 알고리즘 (std::execution)

C++20

가장 큰 변화가 있었던 표준 중 하나로, 범위 기반 프로그래밍과 템플릿 제약이 핵심이다.

주요 기능

  • Concepts (template 제약 조건)
  • Ranges (std::views::filter, transform 등)
  • Coroutines (비동기 코루틴 문법)
  • consteval, 향상된 constexpr
  • 람다 템플릿 파라미터
  • std::format, constinit, module 등 다양한 기능 확장

마무리

C++ 표준은 단순한 문법 규칙을 넘어, 개발자의 사고방식과 코드 품질에 큰 영향을 준다. 사용하는 컴파일러가 어떤 C++ 표준을 지원하는지 확인하고, 프로젝트에 적절한 표준을 선택하는 것이 중요하다. C++20까지 잘 이해하고 있다면, 최신 기술 트렌드에 뒤처지지 않고 효율적인 개발을 이어갈 수 있다.


자주 묻는 질문 (FAQ)

Q. 내 컴파일러가 어떤 C++ 표준을 지원하는지 확인하려면?
A. GCC나 Clang에서는 --version, -std=c++17 옵션을 확인해보면 된다. Visual Studio의 경우 프로젝트 속성에서 확인 가능하다.

Q. 꼭 최신 C++ 표준을 사용해야 하나요?
A. 최신 표준은 더 나은 성능, 안정성, 표현력을 제공하지만, 팀 또는 프로젝트 상황에 따라 적절히 선택하면 된다.

반응형