【发布时间】:2016-03-23 08:43:41
【问题描述】:
是否可以为模板类的特定特化指定模板构造函数ONLY? 我有这个代码:
template <typename T>
class A {
public:
A(std::function<T()> f) : x(f) {}
template <typename Y>
A<void>(Y* x) : x(x) {}
private:
boost::variant<int*, char*, std::function<T()>> x;
}
我试图让第二个构造函数只为非 std::function 参数编译,这就是为什么我试图找到一种方法来明确告诉编译器在这种情况下 T 应该是 void ,但显然这赢了'不编译。
【问题讨论】:
-
在你的情况下,为什么不只对
int*和char*进行重载?
标签: c++ templates specialization boost-variant