問題タブ [universal-reference]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
260 参照

c++ - ユニバーサル参照はトップレベルの cv 修飾子を無視します

ユニバーサル参照がトップレベルの cv 資格を失う理由を誰か教えてもらえますか? 次のコードの 2 番目と 3 番目の関数呼び出しで、出力が const に対して true を返すと予想しました。

出力:

0 投票する
1 に答える
142 参照

c++ - T&& および const T& オーバーロードを指定すると、const 左辺値が const 右辺値とは異なる方法でバインドされるのはなぜですか?

このコード ( http://ideone.com/Mo7fQrで入手可能)

への最初の呼び出しf(左辺値を使用) はconst T&オーバーロードを呼び出し、2 番目の呼び出し (右辺値を使用) はT&&オーバーロードを呼び出します。少なくとも、gcc 4.8.1 と最新の VC++ (VC12) ではそうです。

2 番目の呼び出しがこのように解決される理由を理解していると思います。最初のテンプレートはパラメーターを取得するようにインスタンス化されconst int&ますが、2 番目のテンプレートはconst int&&パラメーターを取得するようにインスタンス化されます。呼び出しサイトで渡される引数は右辺値であるため、優先的にバインドされます。右辺値参照。(これは、C++11 標準の 13.3.3.2/3 の箇条書き 1 のサブ箇条書き 4 で指定されていると思います。)

しかし、 への最初の呼び出しではf、両方のテンプレートがタイプ のパラメータを取るようにインスタンス化しますconst int&constでは、左辺値が渡されたときに最初のテンプレートが優先されるのはなぜですか?

0 投票する
1 に答える
373 参照

c++ - 左辺値引数は、ユニバーサル参照よりも左辺値参照パラメーターを優先しますか?

ユニバーサル リファレンスで遊んでいるときに、clang と gcc がオーバーロードの解決について意見が一致しないこのインスタンスに出くわしました。

gcc は、上記の呼び出しがあいまいであると報告しています。ただし、clangはオーバーロードを選択し、T&正常にコンパイルします。

どのコンパイラが間違っていますか? その理由は?

編集:
VS2013 プレビューで同じコードをテストし、clang に同意します。gcc側にあるIntellisenseを除いて:-)

0 投票する
2 に答える
669 参照

c++ - コンストラクターのユニバーサル参照が原因で失敗し、呼び出し可能なファンクターを std::function に割り当てることができません

次の完全なテスト ケースでは、最初の ctor を使用してファンクターを値で取得し、それを所定の位置に移動すると、コードがコンパイルされ、期待どおりに動作します。

ただし、ユニバーサル参照 ctor を使用すると、コンパイルに失敗します (以下に clang エラー メッセージを含めました)。

どうすればこれを修正できますか、または何が間違っていますか?

コンパイル エラー:

0 投票する
2 に答える
167 参照

templates - 他の型推論なしでユニバーサル参照を使用する方法

タイプ inner_t のクラスのラッパー クラスを作成しています。次の方法で、内部クラスの適切なコンストラクター (左辺値参照または右辺値参照) を呼び出すことができますか?

0 投票する
0 に答える
96 参照

c++ - 関数テンプレートのパラメーター T& と T&& はあいまいですか?

次の 2 つのオーバーロードを検討してください。

それらは潜在的にあいまいですか?

次のコードは Clang 3.4 でコンパイルされますが、GCC 4.8 では失敗します。これは、オーバーロード (最初のものはT = int、次のものはT = int&) があいまいであることを示しています。

「参照へのバインディング」はオーバーロード解決の点で「完全一致」であることを認識しているため、問題は、推論の1つが他のものよりも好ましいかどうか、またはそれらが同等に優れているかどうかに帰着すると思いT = intますT = int&