部分は関数で注文コンテキストをundeduced有するテンプレート。
別の質問を読んでいる、私はこの問題に部分的な、その一次のテストケースに削減順序に付属 両方の関数では、オーバーロードの解決に入る専門の関数の型をテンプレートです 私は、部分的で注文に行くとどこで質問があるお見せしましょう。 5月
Cは+が03アンダー、これを指定すると、私は、私がに関するいくつかの不具合の報告を読む意図を使用していた。上記の変換パラメータリスト
ここに私の最初の質問:ウィルこれは現在の値を使って 控除したがって、あまりにも、すべてのA / Pのペアが成功します。今、各テンプレートには、少なくともとして特化され、他の控除は、任意の暗黙の型変換に依存していないため、両方の方向に成功した。その結果、呼び出しがあいまいである。 2回目の質問:今、なぜ実装は、2番目のより専門的なはテンプレートと言うんですね?ポイントは何か私は見過ごす? 編集 :私は 、明示的な専門とインスタンスをテストし、両方の(最近のGCCバージョン |
3 Replies
1)
それは本当に正しい簡素れている場合のだろうか。入力するときはを合成 これは意味すること |
2)
を編集:学んだ後、 1417のダググレで()の実装アルゴリズムのその部分の順序、私はポスターの残りの部分に同意をする必要が来て、元の例ではない'あいまい意図する'は-にもかかわらず、標準はクリアされていないとしてそれはこのような状況で起こるかについてかもしれない。私は)編集この記事を自分自身の利益&参考のために私の改正の考えを(を示す必要があります。特に1417のアルゴリズムでは明らかにそれが 当初、私はなぜ次のあいまいな考えられていただろうか:
しかし、次のあいまいではない: 以下は、発生した場合(理由の1つは、それがあいまいなことを期待する可能性がある: ことが明らかに、彼らは治療さ1417の部分順序アルゴリズムを学んだ後、'3'、上記のことがあったかのように: いくつかのユニーク'のように控除のU'に対して型名のX::type'は成功する -
そして'2'は、明らかに'3'よりも専門です。 |
3)
ここではこの時点で行く私です。私は同意チャールズベイリー 、不正のステップは、から行くことです 手順は、我々が持っていくと思う: 14.5.5.2 / 2
14.5.5.2/3-b1
私の意見では、型として合成される次の: 私は必要なすべての文言が表示されない2番目の合成パラメータの だから今我々は控除の手順を実行: T1に第2四半期 我々は、T1のように我々はテンプレートパラメータを推測しようとすると:
パラメータには、2つの非推定コンテキストであっても我々はTの値を持つので、控除はまだ成功している 第1四半期にT2の T2の我々はテンプレートパラメータをやるべき:
私見では、ここでどこに基準が私たちをことができますです。それは実際に明確に何が起こる必要がありますないので、パラメータが依存していないですが、14.8.2.1 / 3を読んで細目に基づいて、私の経験は()であることもここでパラメータタイプPに依存し、引数の型が一致する必要がないそれは。 T1の合成引数はT2を専門にではなく、逆に使用することができます。 T2はそのためより専門的なものT1ですので、最高の機能です。 更新1: ちょうどpoingについてカバーするために 上記では、 更新2 |