이 질문은 C++ explicit template specialization of templated constructor of templated class과 중복 될 수 있습니다. 그러나 그 스레드에서 해결책을 찾지 못했습니다. 템플릿 기반 클래스의 템플릿 생성자에 대한 명시 적 템플릿 전문화
나는 템플릿 생성자와 템플릿 클래스가 있습니다template<typename First, typename ... Rest> class var {
public:
template<typename T> var(T& t) {
std::cout << "general" << std::endl;
}
};
그러나 경우에이 클래스, 즉 매개 변수 (같은 클래스의 객체 인스턴스화됩니다
, 우리는 저작권법과 전화하고 싶습니다를 (또는 move-) 생성자) 특정 작업을 수행해야합니다.template<typename First, typename ... Rest> template<>
var<First, Rest...>::var(var<First, Rest...>& v) {
std::cout << "copy" << std::endl;
}
이 때 g ++ 4.6이 컴파일하려고 내가 오류 얻을 : 그래서 나는 다음과 같은 시도하기 전에 잘못된 명시 적으로 전문화 '>'토큰 오류 : 둘러싸는 클래스 템플릿 명시 적으로 전문 이전 오류로 혼동하지 않습니다, 내가 생성자를 전문으로하고자하는 클래스 I는 문제를 볼
구제, 나는 ... 그러나 명시 적으로 말을
있을 것입니다, 나는 내가 원하는 것을 분명 해졌다 바랍니다. 어떤 아이디어?
template<typename First, typename ... Rest> class var {
public:
var() {};
var(const var& v) {
std::cout << "copy" << std::endl;
}
template<typename T>
var(const T& t) {
std::cout << "general" << std::endl;
}
};
int main()
{
var<int> i0;
var<int> i1(i0);
var<int> i2("Hello");
}
이
copy
general
참고를 제공합니다 : 복사 생성자는 실패와 같은 비 복사 생성자를 전문으로하는 몇 가지 const를
귀하의 시도를 추가
질문에 표시된 문제에 대한 답변이 정상적으로 작동합니다. 그것은 나가 질문하고 싶었던 무슨을 확실히 질문하지 않았다 그래서 새로운 질문 있는다 : http://stackoverflow.com/questions/22024090/class-with-templated-constructor-as-well-as-copy-and -move-constructor – mg84