인수 유형에 따라 조건부로 컴파일하려는 템플릿이 있습니다. 필자는 "일반 오래된 데이터"(POD), 즉 정수, 클래스 또는 구조체를 구별하는 것에 만 관심이 있습니다. Windows에서 C++ VS2008을 사용하고 있습니다.부스트 타입 - 특성을 사용한 조건부 컴파일
template<T>
class foo
{
void bar(T do_something){
#if IS_POD<T>
do something for simple types
#else
do something for classes/structs
#endif
}}
나는 부스트 라이브러리를보고 있었고, 나는 그들이 원하는 것을 가진 것처럼 보일 수있다. 그러나, 나는 문법에 대한 정확한 구문이 무엇인지 이해하지 못한다.
도움을 주시면 감사하겠습니다.
편집 --- 응답을 읽은 후, 나는 질문의 내 정의에 뭔가를 간과 참조하십시오. 클래스 foo
은 class type T
에 대해 올바른 bar
버전 만 인스턴스화해야하는 템플릿 기반 클래스입니다. 컴파일 시간을 해결할 수있는 솔루션을 찾고있었습니다. 희망이 내 문제를 해결.
이것은, 컴파일 오류가있을 것이고, 그 시점에서 당신은'전화는 두 개의 정의를 볼 수 bar' 할 때 그것은 컴파일 실패 그들 중 하나. 이것이 대체 실패가 아니기 때문에 이것이 SFINAE가 아니라는 점에 유의하십시오. 멤버의 인스턴스화 전에 유형이 고정되어 있습니다 (또는 그렇게 생각합니다.)). –