compile-time tools
문제의 종류가 기능 선택을 결정한다
Concepts, if constexpr, consteval, constinit은 모두 컴파일 타임과 관련 있지만
쓰는 문제가 서로 다릅니다.
concepts
템플릿 인자가 어떤 연산을 지원해야 하는지 제한합니다.
API 경계
if constexpr
타입에 따라 컴파일되는 분기를 다르게 만듭니다.
템플릿 분기
consteval
반드시 컴파일 타임에 계산되어야 하는 함수를 만듭니다.
즉시 계산
constinit
정적 객체가 안전한 시점에 초기화되도록 보장합니다.
초기화 안정
먼저 “제약을 걸 것인가, 분기할 것인가, 계산을 강제할 것인가, 초기화를 보장할 것인가”를 구분합니다.