C++ 표준 다음 상태 : 클래스 템플릿의 멤버 또는 네임 스페이스 범위에 나타납니다 멤버 템플릿에 대한 명시 적 전문화 선언에서클래스를 전문화하지 않은 채 멤버의 명시 적 특수화가 허용되지 않는 이유는 무엇입니까?
, 멤버 템플릿과 바깥 쪽 클래스 템플릿의 일부는 남아있을 수 있습니다 예외는 명시 적으로 클래스 템플릿을 포함하는 이 명시 적으로 특수화되지 않은 경우 클래스 멤버 템플릿을 명시 적으로 전문화하지 않습니다.. (14.7.3/16 이후 C++ 11에서 14.7.3/18 세 기준)
이 다음을 수 없음을 의미합니다 :의
template<typename T>
class foo {
template<typename U>
void bar();
};
template<typename T>
template<>
void foo<T>::bar<some_type>(){
}
이미있어왔다 여러 질문 이 문제와 관련된 사람들은 "표준에 의하면 그렇게 대답했습니다."라고 대답했습니다. 내가 이해할 수없는 것은이 제한이 존재하는 이유입니다. 단지 클래스에 대해 하나의 전문화가있는 경우에,
(예 T=int
), 단지 회원에 대한 또 다른 전문화 (예 : U=int
)는 것은 불가능하다 : 대답에 대한 존은 말하기에
대략 추측 :'T = int'와'U'에 대한 전문화가 불특정화되고'U = int', 특수화되지 않은'T'가 존재한다면,'T = int ''U = int'? – JohnB
아, 이제 바보 같은 느낌이 들지 ... – Soliter11
질문에 대답해야합니까,하고 싶습니까? – Soliter11