回答編集履歴
2
追記
test
CHANGED
@@ -11,3 +11,13 @@
|
|
11
11
|
コンパイラは`Foo<int>& operator(Foo<int> const&)`を自動生成しますが、これはテンプレートではありません。
|
12
12
|
|
13
13
|
関数テンプレートと通常の関数では通常の関数が優先して呼び出されるため、自動生成された代入演算子がよばれたのではないでしょうか?(あまり自信なし)
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
---
|
18
|
+
|
19
|
+
【追記】
|
20
|
+
|
21
|
+
ならば、`Foo<T>& operator=(Foo<T> const&) = delete;`すれば良さそうなものですが、[ダメでした](https://wandbox.org/permlink/YTfpAAQYJtdqI0jV)。
|
22
|
+
|
23
|
+
明示的に`Foo<int>& operator=(Foo<int> const&)`を[定義する](https://wandbox.org/permlink/8alhtIDor59WDn6l)しかないかも知れません。
|
1
微修正
test
CHANGED
@@ -6,6 +6,8 @@
|
|
6
6
|
|
7
7
|
|
8
8
|
|
9
|
+
明示的実体化された`Foo<int>`はテンプレートではなく型ですね。
|
10
|
+
|
9
|
-
|
11
|
+
コンパイラは`Foo<int>& operator(Foo<int> const&)`を自動生成しますが、これはテンプレートではありません。
|
10
12
|
|
11
13
|
関数テンプレートと通常の関数では通常の関数が優先して呼び出されるため、自動生成された代入演算子がよばれたのではないでしょうか?(あまり自信なし)
|