問題タブ [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.
c++ - ユニバーサルリファレンス経由で渡された関数の std::forward ?
次の 2 つを検討してください。
と
どのような場合に違いがあり、具体的にどのような違いがあるのでしょうか?
c++ - std::forward の違いは何ですかおよび std::forward?
これらの機能は同等ですか?
そうである場合、このマクロを常に使用して完全な転送を行うことはできますか?
または単に使用する
私はfoo2
とfoo3
は同じだと信じていますが、人々は常に forward like を使用していることがわかりましfoo
た。型を明示的に記述する理由はありますか?
T
とは 2 つの異なるタイプであることは理解していますが、 とは常に同じ結果になるT&&
と思いますか?std::forward<T>
std::forward<T&&>
編集:
マクロを使用したい理由は、次の C++1y コードの入力を節約したいからです。さまざまな場所に多くの同様のコードがあります。
c++11 - この場合の完全転送
現在、完全転送について読んでいますが、完全転送の目的は、左辺値を左辺値として、右辺値を右辺値として渡すことであると述べています。したがって、次の例を使用して完全な転送を理解しています。ここのfoo
オブジェクトには、コピーと移動の cnstr があり、コピーと移動の代入演算子もあります。
現在、VS2012 でこのコードをテストしており、move コンストラクターは一度だけ呼び出されます。私はそれが2回呼び出されることを期待していました。誰かが私にこれを説明できれば幸いです。最初の移動コンストラクターがリレーで呼び出され、次の移動コンストラクターが mfoo で呼び出されることを期待していました
c++ - この完璧な転送の例を理解する
std::forward
何が機能するかを理解しようとしているときに、次の例に出くわしました
プログラムの出力は
右辺値で fn を呼び出す: [左辺値][右辺値]
さて、私の質問は、どうやってlvalue
最初に手に入れたのですか? main
これが私が呼んだ私たちの私の考え方ですfn(0);
Now 0 is rvalue. したがって、ユニバーサル参照 x は次のように推定されます。
参照の崩壊によると、次のようになります
したがって、右辺値x
のように動作します。したがって、x
が渡された場合、右辺値のオーバーロードされたメソッドを呼び出す必要があります。ただし、他のオーバーロードされた左辺値参照関数が呼び出されているようです。誰かがこれを明確にしてくれれば幸いです
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?
c++ - STL アルゴリズムの参照しやすさ
いくつかの異なる ref 修飾された、または単に const 修飾された のオーバーロードを含むファンクターがあるとしますoperator ()
。STLアルゴリズムを使用するさまざまなコンテキストで、さまざまなものを呼び出す必要があります。つまり、operator ()
STLアルゴリズムに提供するファンクター値/参照のconstnessまたは「lvalue/rvalue-ness」に依存して呼び出される適切なオーバーロードが必要です。たとえば、仮説アルゴリズムがありますrecurrent_all_of
。STL で見つかる可能性があるフォームは次のとおりです。
しかし、参照しやすいという主張を満たすには、フォームは次のようにする必要があります。
誤解はありますか?STL アルゴリズムがそのように設計されていないのはなぜですか?