のC++ 17のパラメータ控除テンプレートの原因の曖昧さをコンストラクタができます。私は、テンプレート関数(ここではコンストラクタ)が過負荷解決の優先順位を低くしていると考えました。ここには当てはまりませんか?は、簡単な例を考えてみましょクラステンプレート
エラーメッセージ:
prog.cc:10:14: error: ambiguous deduction for template arguments of 'foo'
foo f1(foo<int>{}); //case 1.
^
prog.cc:4:5: note: candidate function [with T = int, TT = foo]
foo(TT<T>&&) {}
^
prog.cc:5:5: note: candidate function [with T = int]
foo(foo<T>&&){}
^
1 error generated.
あなたは正しいかもしれませんが、私は標準的な参考文献に満足しています。 MSVCもこれを爆破する。編集:あなたは私にそれを打つ。ありがとうございました。 – AndyG
コピー控除候補はどうですか? –
@VaughnCato - それはリストの次の弾です。しかし、私はそれがあいまいであるべきかどうかには関係しないと思う。 – StoryTeller