다음은 MSVC++ 10 Sp1에서 "내부 컴파일러 오류"를 제공합니다. 부분 및 명시 적 템플릿 특수화의 이상한 오류
그리고 GCC에
: 16 : 12 : 오류 : b.cpp 비 네임 스페이스 범위에 명시 적으로 전문화'A ::의 B를 구조체'b.cpp : 16 : 28 : 오류 : struct B
전에 코멘트가 컴파일 제거하면 템플릿 ID는,
//class template
template< class T>
struct A{
//struct B {}; //Remove the comment and it will compile!
};
//partial specialization
template< class T >
struct A< T* >
{
struct B {
template<class C> void f(){}
//"Internal Compiler Error"
template<> void f<int>(){};
};
};
그러나 기본 템플릿의 선언에 'F'!
나는이 문제를 이해하지 못한다!
첫째,이 컴파일되어 있지 않습니다. 그리고 당신은 버그 보고서를 제출해야합니다. 여기에 아무런 문제가 없으며 소스가없는 코드의 버그를 설명 할 수 없습니다. –
주석을 제거한 상태에서 컴파일하면 안됩니다. –
가능한 [템플릿 클래스의 템플릿 함수를 명시 적으로 특수화하기위한 C++ 구문?] (http://stackoverflow.com/questions/2097811/c-syntax-for-explicit-specialization-of-a-template-function -in-a-template-clas) –