問題タブ [perfect-forwarding]

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 に答える
151 参照

c++ - ユニバーサルリファレンス経由で渡された関数の std::forward ?

次の 2 つを検討してください。

どのような場合に違いがあり、具体的にどのような違いがあるのでしょうか?

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

c++ - std::forward の違いは何ですかおよび std::forward?

これらの機能は同等ですか?

そうである場合、このマクロを常に使用して完全な転送を行うことはできますか?

または単に使用する

私はfoo2foo3は同じだと信じていますが、人々は常に forward like を使用していることがわかりましfooた。型を明示的に記述する理由はありますか?

Tとは 2 つの異なるタイプであることは理解していますが、 とは常に同じ結果になるT&&と思いますか?std::forward<T>std::forward<T&&>


編集:

マクロを使用したい理由は、次の C++1y コードの入力を節約したいからです。さまざまな場所に多くの同様のコードがあります。

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

c++11 - この場合の完全転送

現在、完全転送について読んでいますが、完全転送の目的は、左辺値を左辺値として、右辺値を右辺値として渡すことであると述べています。したがって、次の例を使用して完全な転送を理解しています。ここのfooオブジェクトには、コピーと移動の cnstr があり、コピーと移動の代入演算子もあります。

現在、VS2012 でこのコードをテストしており、move コンストラクターは一度だけ呼び出されます。私はそれが2回呼び出されることを期待していました。誰かが私にこれを説明できれば幸いです。最初の移動コンストラクターがリレーで呼び出され、次の移動コンストラクターが mfoo で呼び出されることを期待していました

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

c++ - この完璧な転送の例を理解する

std::forward何が機能するかを理解しようとしているときに、次の例に出くわしました

プログラムの出力は

右辺値で fn を呼び出す: [左辺値][右辺値]

さて、私の質問は、どうやってlvalue最初に手に入れたのですか? mainこれが私が呼んだ私たちの私の考え方ですfn(0);Now 0 is rvalue. したがって、ユニバーサル参照 x は次のように推定されます。

参照の崩壊によると、次のようになります

したがって、右辺値xのように動作します。したがって、xが渡された場合、右辺値のオーバーロードされたメソッドを呼び出す必要があります。ただし、他のオーバーロードされた左辺値参照関数が呼び出されているようです。誰かがこれを明確にしてくれれば幸いです

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

c++ - (C++11) Variadically templated function fowards to another

I'm trying to forward my tail from parser to add_option, but GCC won't allow this:

Instead, GCC gives me this error:

Can anybody tell me what I'm doing wrong here? How can I fix this?

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

c++ - STL アルゴリズムの参照しやすさ

いくつかの異なる ref 修飾された、または単に const 修飾された のオーバーロードを含むファンクターがあるとしますoperator ()。STLアルゴリズムを使用するさまざまなコンテキストで、さまざまなものを呼び出す必要があります。つまり、operator ()STLアルゴリズムに提供するファンクター値/参照のconstnessまたは「lvalue/rvalue-ness」に依存して呼び出される適切なオーバーロードが必要です。たとえば、仮説アルゴリズムがありますrecurrent_all_of。STL で見つかる可能性があるフォームは次のとおりです。

しかし、参照しやすいという主張を満たすには、フォームは次のようにする必要があります。

誤解はありますか?STL アルゴリズムがそのように設計されていないのはなぜですか?