Я задал этот вопрос о перегрузке конструктора копирования и оператора присваивания версиями шаблона и рассмотрении путаницы, связанной с вопросом (поскольку это, похоже, ошибка компилятора), я решил попробоватьтолько конструктор копирования шаблона и оператор присваивания шаблона, чтобы увидеть, что происходит.Но они полностью игнорируются компилятором.
struct BaseClass
{
public:
BaseClass() {}
template<typename T>
BaseClass(const T& a_other)
{
int i = 0; // for break point which is not hit
}
template<typename T>
BaseClass& operator= (const T& a_other)
{
int i = 0; // for break point which is not hit
return *this;
}
};
struct MyClass : public BaseClass
{
};
int main()
{
MyClass i, j;
i = j;
return 0;
}
Почему я не могу переопределить значения по умолчанию с версиями шаблонов (я подозреваю, что ответ будет значения по умолчанию лучше соответствуют , но я бы хотел, чтобы версии шаблонов действовалитак же по умолчанию)?И что я могу сделать, чтобы убедиться, что версии шаблонов вызываются вместо значений по умолчанию?