前提・実現したいこと
関数テンプレートを用いるとクラステンプレートと同じ型の代入演算子だけがオーバーロードされません.
クラステンプレートと同じ型の代入演算子をオーバーロードする方法を知りたいです.
可能であれば,なぜオーバーロードされなかったのか説明してくださると勉強になります.
よろしくお願いします.
該当のソースコード
C++
1#include <iostream> 2template<class T> 3class Foo { 4public: 5 T val; 6 Foo() : val(0) {} 7 template <typename U> 8 Foo<T> operator=(const Foo<U> &arg) { 9 std::cout << "operator=" << std::endl; 10 this->val = arg.val; 11 return *this; 12 } 13}; 14int main() { 15 Foo<int> bar1; 16 Foo<int> bar2; 17 Foo<double> bar3; 18 std::cout << "int" << std::endl; 19 bar1 = bar2; // 「operator=」と表示されない 20 std::cout << "double" << std::endl; 21 bar1 = bar3; // 「operator=」と表示される 22 return 0; 23}
補足情報(FW/ツールのバージョンなど)
C++11
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/24 07:23