에 함수 정의와 일치 할 수없는 ++ 2010 MSVC, 선언 블록 외부 템플릿 클래스 멤버를 정의 :템플릿 기반 클래스 : 사용하여 기존의 선언
template <typename T> class cls {
public:
template <typename T> void bar(T x);
};
template <typename T> void cls<T>::bar(T x) {}
수율 :
unable to match function definition to an existing declaration
1> definition
1> 'void cls<T>::bar(T)'
1> existing declarations
1> 'void cls<T>::bar(T)'
이유는 무엇입니까?
template <typename P>
template <typename T>
void cls<P>::bar(T x) {}
을하지만 bar
전혀 템플릿 할 필요가 없습니다 것을 나에게 보인다 각각의 구조가 다른 템플릿 인수에 작동하기 때문에
''명시 적 템플릿 인수를 사용하지 않습니다. ' – mchen
예제에서는'' 템플릿을 두 번 사용합니다. 이것이 오류의 원인입니다. 형식 이름을 다른 것으로 변경하십시오. –
0x499602D2
'bar'에 대한 템플릿 매개 변수를 명시 적으로 작성하면 안됩니다. 이것은 부분 전문화로 파싱됩니다. – jrok