コピーコンストラクターと代入演算子をテンプレートバージョンでオーバーロードすることについてこの質問をし、質問に関連する混乱を考慮して(コンパイラのバグのように見えるため)、テンプレートコピーコンストラクターとテンプレート代入演算子のみを使用して試してみようと思いました何が起こるか見てください。しかし、それらはコンパイラによって完全に無視されます。
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;
}
テンプレート バージョンでデフォルトをオーバーライドできないのはなぜですか (答えは、デフォルトの方が適切であると思われますが、テンプレート バージョンもデフォルトとして機能するようにしたいと考えています)。そして、デフォルトの代わりにテンプレートのバージョンが呼び出されるようにするためにできることはありますか?