Конструкторы C++ могут быть шаблонами?

У меня есть нешаблонный класс с 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.

7
задан Johannes Schaub - litb 23 April 2010 в 14:39
поделиться

2 ответа

Да, конструкторы могут быть шаблонами.

12
ответ дан 6 December 2019 в 07:05
поделиться

Для конструкторов вполне допустимо быть членами шаблона. Единственное, о чем я могу подумать, это то, что конструктор шаблона никогда не является конструктором копирования, поэтому конструктор шаблона сам по себе не предотвращает создание конструктора копирования, созданного компилятором.

13
ответ дан 6 December 2019 в 07:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: