Clang에서 컴파일 타임 제네릭 람다를 못 쓴다면? 우회 방법은 있다

I can't use generic lambdas at compile-time, now what?

컴파일 타임 테스트 라이브러리 k3tchup을 만드는 저자가 Clang 16 이상에서 제네릭 람다를 consteval로 평가할 수 없는 버그(llvm/llvm-project#35052)에 부딪힌다. 매크로 안에서 if constexpr로 패킷 실행을 분기하려면 템플릿 문맥이 필요한데, 제네릭 람다가 컴파일 타임에 실행되지 않으면 이 구조가 무너진다. 저자는 함수 템플릿 호출로 우회하는 방법을 단계별로 풀어낸다.

이건 걱정스러운 일이었다. 제네릭 람다를 컴파일 타임에 평가할 수 없다는 뜻이니까.