我有非模板类,带有模板化构造函数。这段代码为我编译。但我记得在某个地方我提到构造函数不能是模板。有人可以解释这是否有效?
typedef double Vector;
//enum Method {A, B, C, D, E, F};
struct A {};
class Butcher
{
public:
template <class Method>
Butcher(Method);
private:
Vector a, b, c;
};
template <>
Butcher::Butcher(struct A)
: a(2), b(4), c(2)
{
// a = 0.5, 1;
// b = -1, 1, 3, 2;
// c = 0, 1;
}
谢谢, 戈库尔。
答案 0 :(得分:13)
构造函数成为模板成员是完全有效的。我能想到的唯一一件事就是模板构造函数永远不是复制构造函数,因此模板构造函数本身不会阻止生成编译器生成的复制构造函数。
答案 1 :(得分:12)
是的,构造函数可以是模板。