我有一個模板化構造函數的非模板類。這段代碼爲我編譯。但我記得我曾經提到構造函數不能成爲模板。有人可以解釋這是否是一種有效的用法?C++構造函數可以是模板嗎?
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;
}
感謝, 戈庫爾。
實際上,所有STL容器都至少有一個模板化構造函數。 (這是需要任何兼容迭代器類型的兩個迭代器的那個)。 – sbi 2010-04-23 07:28:54