【发布时间】:2014-02-25 14:20:08
【问题描述】:
这个问题可能与这个问题重叠: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;
}
};
但是,如果这个类是用与参数相同的类的对象实例化的(即,我们想调用复制(或移动)构造函数),则应该做一些特定的事情。所以我尝试了以下方法:
template<typename First, typename ... Rest> template<>
var<First, Rest...>::var(var<First, Rest...>& v) {
std::cout << "copy" << std::endl;
}
当试图用 g++ 4.6 编译它时,我得到 错误:“>”标记之前的显式特化无效 错误:封闭类模板没有明确专门化 被之前的错误弄糊涂了,想要摆脱困境
我看到了问题,我必须明确说明我想为哪个类专门化构造函数...
但是,我希望我想做什么变得很清楚。有什么想法吗?
【问题讨论】: