回答編集履歴
1
追記
answer
CHANGED
@@ -10,4 +10,10 @@
|
|
10
10
|
code 2は、単に`template<typename T, typename> void foo(T) {}`を2つ並べたものですので、同じものを2つ定義したことになります。(デフォルト・パラメータより先に型が評価されるようです。)
|
11
11
|
[ここ](http://cpplover.blogspot.jp/2011/04/c0xenableif.html)が参考になります。(この江添氏のサイトは本当に有用です。ありがたや、ありがたや。)
|
12
12
|
|
13
|
-
なお、clangの場合、同じものの宣言にデフォルト引数を2回以上書くと、`template parameter redefines default argument`の[エラー](http://stackoverflow.com/questions/14197436/c11-template-parameter-redefines-default-argument)になるそうなので、そこでエラーになっているようです。
|
13
|
+
なお、clangの場合、同じものの宣言にデフォルト引数を2回以上書くと、`template parameter redefines default argument`の[エラー](http://stackoverflow.com/questions/14197436/c11-template-parameter-redefines-default-argument)になるそうなので、そこでエラーになっているようです。
|
14
|
+
|
15
|
+
---
|
16
|
+
【追記】
|
17
|
+
そうそう、enablerについては、[std::enable_ifを使ってオーバーロードする時、enablerを使う?](http://qiita.com/kazatsuyu/items/203584ef4cb8b9e52462)も面白いです。
|
18
|
+
|
19
|
+
なんと、yumetodoさんがコメントされてますね。彼が江添氏へ確認したところ「いいのではないか。しかし、そろそろこういうことはコンセプトでやりたい。」って返事が返っているようですが、conceptの採用は延期されてしまいました。orz
|