Tôi có lớp không phải mẫu với một hàm tạo templatized. Mã này biên dịch cho tôi. Nhưng tôi nhớ rằng một nơi nào đó tôi đã gọi rằng các nhà xây dựng không thể là mẫu. Ai đó có thể giải thích cho dù đây là một cách sử dụng hợp lệ?C++ Constructors có thể là mẫu không?
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;
}
Xin cảm ơn, Gokul.
Thực tế, tất cả các vùng chứa STL đều có ít nhất một hàm tạo templatized. (Đó là một trong đó có hai vòng lặp của bất kỳ loại vòng lặp tương thích.) – sbi