2025. 7. 1. 11:17ㆍDeveloper 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 expressionstd::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. 최신 표준은 더 나은 성능, 안정성, 표현력을 제공하지만, 팀 또는 프로젝트 상황에 따라 적절히 선택하면 된다.
'Developer Roadmap > C++' 카테고리의 다른 글
C++ 컴파일러 종류와 컴파일 과정 정리 (0) | 2025.07.03 |
---|---|
C++ 디버거 종류와 사용법 정리 (GDB, LLDB, WinDbg 완전 가이드) (1) | 2025.07.02 |
C++ Idioms 핵심 정리: RAII, Rule of Five, PImpl 등 꼭 알아야 할 패턴들 (0) | 2025.06.30 |
C++ 템플릿 완전 정복: 함수, 클래스, 특수화, SFINAE, Variadic까지 (1) | 2025.06.27 |
C++ STL 완전 정리: 컨테이너, 알고리즘, 반복자 한눈에 보기 (0) | 2025.06.25 |