С кодом:
template <typename T>
class MyClass
{
public:
MyClass(const MyClass& other)
{
//Explicit, types must both match;
}
template <typename U>
MyClass(const MyClass<U>& other)
{
//Implicit, types can copy across if assignable.
//<?> Is there a way to make this automatically happen for memberwise
//copying without having to define the contents of this function?
this->value = other.getValue();
}
privte:
T value;
};
Следующие случаи будут верны:
MyClass<float> a;
MyClass<float> b = a; //Calls explicit constructor which would have been auto-generated.
MyClass<int> c;
MyClass<float> d = c; //Calls implicit constructor which would not have been auto gen.
Мой вопрос: есть ли способ получить неявный конструктор копирования, подобный этому, ноне надо определять как это работает?Копирование, присваивание и стандартные конструкторы предоставляются при создании класса по умолчанию ... было бы неплохо иметь возможность получить конструктор неявного преобразования также бесплатно, если это возможно, при использовании шаблонов.
IЯ предполагаю, что это невозможно, но кто-то может объяснить, почему это для меня, если это так?
Спасибо!