У меня есть нешаблонный класс с templatized конструктором. Этот код компилирует для меня. Но я помню, что где-нибудь отослал это, конструкторы не могут быть шаблонами. Кто-то может объяснить, является ли это допустимым использованием?
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;
}
Спасибо, Gokul.
Для конструкторов вполне допустимо быть членами шаблона. Единственное, о чем я могу подумать, это то, что конструктор шаблона никогда не является конструктором копирования, поэтому конструктор шаблона сам по себе не предотвращает создание конструктора копирования, созданного компилятором.