D에 있는 static_if 같은 개념이 C++에도 있으면 확실히 유용하긴 하겠다.
조건식은 컴파일 타임 때 값이 완전히 결정되어서 if 쪽 내지 else 쪽의 코드의 포함 여부는 컴파일 타임 때 결정된다. 이건 전처리기와 비슷하지만 조건식 값 자체는 철저하게 컴파일러 문맥이다. sizeof 연산자도 쓸 수 있다.
이 구문은 조건부 컴파일뿐만 아니라 템플릿에서 더욱 절실히 필요하다. 같은 템플릿이라도 주어진 템플릿 인자의 특성에 따라 명시적으로 서로 다른 코드가 생성되게 할 수 있기 때문이다. 이건 전처리기로는 아예 할 수 없는 일이다.
보충 설명에 감사드립니다. ^^
1. global 내지 namespace 안에 평범하게 선언된 클래스 말고, 함수 안에 임시 선언된 클래스가 템플릿이 안 되는 상황을 얘기하는 거랍니다. 컴파일러 에러 C2951이죠. https://msdn.microsoft.com/en-us/library/29kz25ed.aspx
2. 제너릭이 쓰인 람다라...;; 역시 template 대신 auto로 계속 밀어붙이는군요. ㄷㄷㄷ
3. static if도 제가 상상하던 것과 형태가 약간 다르긴 하지만 흠좀무스러운 형태..;;
점점 더 기괴해지고 있지만 그래도 확실히 필요성 자체는 다들 느끼고 있나 봅니다.