문제

문자가 아닌 배열에 대한 특성을 부분적으로 전문화하려고합니다. 라코 디스

Visual Studio 2010은 C2039를 제공합니다 (typeenable_if의 요소가 아닙니다 ...).그러나 SFINAE는 컴파일러 오류를 제공하는 대신 여기에서 바닥을 쳐야하지 않습니까?아니면이 경우 SFINAE가 적용되지 않습니까?

물론 non-char 및 char에 대한 전문화를 분리 할 수 있습니다. 라코 디스

하지만이 특별한 경우에 SFINAE가 작동하지 않는 이유를 알고 싶습니다.

도움이 되었습니까?

해결책

'3.1 템플릿 클래스 전문화 활성화'항목을 확인하십시오. http://www.boost.org/doc/libs/1_47_0/libs/utility/enable_if.html

편집 : boost.org 링크가 죽을 경우 ...

3.1 템플릿 클래스 전문화 활성화 클래스 템플릿 전문화는 enable_if를 사용하여 활성화 또는 비활성화 할 수 있습니다.인 에이 블러 표현식에 대해 하나의 추가 템플릿 매개 변수를 추가해야합니다.이 매개 변수의 기본값은 void입니다.예 : 라코 디스

A를 정수 유형으로 나타내면 첫 번째 전문화와 일치하는 반면 부동 소수점 유형은 두 번째 전문화와 일치합니다.다른 모든 유형은 기본 템플릿과 일치합니다.조건은 클래스의 템플릿 인수에 따라 달라지는 컴파일 타임 부울 식일 수 있습니다.다시 말하지만 enable_if에 대한 두 번째 인수는 필요하지 않습니다.기본값 (void)이 올바른 값입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top