C++26, 무엇이 왜 바뀌었는가
2026년 3월, C++26이 정식으로 확정됐다
WG21(C++ 표준위원회)이 C++26 초안을 최종 승인한 건 2026년 3월 28일입니다. 국제 표준으로 정식 출판되기까지는 보통 몇 달이 더 걸리지만, 기능 목록(feature freeze)은 이미 끝났습니다. 즉 "C++26에 뭐가 들어갈지"는 더 이상 논쟁거리가 아니라 확정된 사실입니다.
C++11 이후 이 정도로 언어의 겉모습이 바뀐 표준은 없었다고 봅니다. C++17이나 C++23은 표준 라이브러리를 다듬는 쪽에 가까웠고, 실제로 매일 쓰는 코드의 생김새는 크게 안 변했습니다. C++26은 다릅니다. ^^ 라는 전에 없던 연산자가 언어에 추가되고, 함수 선언부에 pre·post 키워드가 붙고, 비동기 코드를 짜는 방식 자체가 바뀝니다.
이 책은 그중에서도 실무 영향이 가장 큰 세 가지만 다룹니다.
- 정적 리플렉션 — 컴파일 타임에 타입 정보를 코드로 다룰 수 있게 됩니다. 지금까지 매크로나 코드 생성기로 처리하던 직렬화·ORM 매핑 같은 작업을 표준 문법으로 풀 수 있습니다.
- Contracts — 함수에 사전조건·사후조건을 문법 차원에서 붙입니다.
assert()를 20년 넘게 손으로 흉내 내던 걸 이제 컴파일러가 이해합니다. - std::execution (센더/리시버) — 비동기 작업을 조합하는 표준 모델입니다. 콜백 체인이나 미래(future) 기반 코드가 겪던 문제를 구조적으로 해결하려는 시도입니다.
세 기능 모두 P2996, P2900, P2300이라는 제안서 번호로 몇 년간 논의됐고, 실제로 채택 확정된 시점은 각기 다릅니다(리플렉션과 Contracts는 2025년, std::execution의 뼈대인 P2300은 2024년 6월 세인트루이스 총회). 표준 하나에 이렇게 무게 있는 기능이 세 개나 한꺼번에 들어간 건 이례적입니다.
반대로 이번 표준에서 빠진 것도 있습니다. trivial relocatability(객체를 memcpy로 안전하게 옮길 수 있는지 표시하는 기능)는 논의가 무르익었다가 구현체 버그 때문에 이번 표준에서 제외되고 다음으로 미뤄졌습니다. "제안됐다"는 뉴스와 "표준에 들어갔다"는 사실을 구분해야 하는 이유입니다.
세 기능이 실제 코드에서 어떤 느낌인지 맛보기만 보고 넘어가겠습니다. 자세한 문법은 각 장에서 다룹니다.
// 1. 정적 리플렉션 — 타입 정보를 컴파일 타임 값으로 다룬다
constexpr std::meta::info r = ^^MyStruct;
// 2. Contracts — 함수 선언부에 계약을 붙인다
int at(int index) pre(index >= 0 && index < size_);
// 3. std::execution — 비동기 작업을 값처럼 조합한다
auto work = just(3) | then([](int x) { return x * 2; });셋 다 기존 C++ 문법에 없던 형태입니다. 이 낯섦이 이번 표준을 다른 표준과 구분 짓는 지점입니다.
이 책이 다루지 않는 것
C++26에는 이 외에도 디버깅 헤더(std::breakpoint()), 선형대수 헤더, 텍스트 인코딩 헤더, 모듈 개선 등이 포함됩니다. 이들은 실무에서 마주칠 빈도가 낮거나 기존 기능의 점진적 개선에 가까워 이 책에서는 다루지 않습니다. 대신 위 세 기능에 지면을 몰아서, 각각을 "왜 필요한지 → 어떻게 쓰는지 → 어디까지가 한계인지" 순서로 깊게 파고듭니다.
컴파일러는 따라오고 있는가
표준 문서와 실제로 쓸 수 있는 컴파일러 사이엔 항상 시차가 있습니다. 이 책을 쓰는 시점(2026년 7월) 기준으로:
| 기능 | GCC | Clang | MSVC |
|---|---|---|---|
| 정적 리플렉션 (P2996) | 실험적 지원 (trunk) | 실험적 지원 (-freflection) |
실험적 지원 |
| Contracts (P2900) | 부분 지원 | 부분 지원 | 부분 지원 |
| std::execution (P2300) | 표준 라이브러리 미포함, NVIDIA stdexec로 선행 사용 가능 | 동일 | 동일 |
즉 오늘 당장 프로덕션 코드에 이 세 기능을 쓸 수는 없습니다. 하지만 이 책을 지금 읽어야 하는 이유가 바로 여기 있습니다. 표준이 확정된 뒤 컴파일러가 완전히 따라잡기까지는 보통 1~2년이 걸리고, 그 사이에 코드베이스를 어떻게 마이그레이션할지 미리 판단해두는 쪽이 나중에 급하게 배우는 것보다 낫습니다. 마지막 장에서 컴파일러별 지원 현황을 다시 자세히 다룹니다.