compile-time choice
문제의 종류가 기능 선택을 결정한다
Concepts, if constexpr, consteval, constinit은 모두 컴파일 타임을 다루지만 질문이 다르다.
concepts이 타입이 조건을 만족하는가
if constexpr템플릿 안에서 분기를 지울 것인가
consteval반드시 컴파일 타임에 계산할 것인가
constinit정적 초기화를 보장할 것인가
| 질문 | 선택 | 효과 |
|---|---|---|
| 타입 요구를 설명? | concepts | 오류 지점을 선언부로 올림 |
| 분기 코드를 제거? | if constexpr | 맞지 않는 가지는 인스턴스화하지 않음 |
| 항상 컴파일 타임 계산? | consteval | 런타임 호출 자체를 허용하지 않음 |
| 초기화 순서가 위험? | constinit | 런타임 초기화 의존을 차단 |
핵심 기능 이름보다 “조건 검사, 분기 제거, 강제 계산, 초기화 보장” 중 무엇이 필요한지 먼저 고른다.