C++构造函数可以是模板吗?

Gok*_*kul 7 c++ templates constructor

我有一个带有模板化构造函数的非模板类.这段代码为我编译.但我记得在某个地方我提到构造函数不能是模板.有人可以解释这是否是有效的用法?

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;
}
Run Code Online (Sandbox Code Playgroud)

谢谢,Gokul.

CB *_*ley 13

构造函数成为模板成员是完全有效的.我能想到的唯一一件事就是模板构造函数永远不是复制构造函数,因此模板构造函数本身不会阻止生成编译器生成的复制构造函数.

  • 花了2分钟才明白你在第二句话里的意思:) (4认同)

And*_*nck 12

是的,构造函数可以是模板.