問題タブ [rvalue-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.
c++ - RValue、テンプレート解決、およびコピーコンストラクター(Visual C ++ 2010の場合)
単純なコンテナークラスを構築していますが、いくつかの問題が発生します(Visual C ++ 2010でのコンテナーの再アセンブル、右辺値参照のバグ?)
上記のコードは次のエラーを出します:
リンクされた質問で説明されているようなトリックを使用せずに、このエラーをどのように修正できますか?
ありがとう!
編集: 私を最も混乱させるのは、2つの特殊なコンストラクターのいずれも呼び出されない理由です。彼らは電話に非常によく合います。
c++11 - 関数型への右辺値参照とは何ですか?
私は最近、C ++ 0xのglvalues、xvalues、prvaluesの概念、および右辺値の参照に頭を悩ませました。しかし、まだ私にはわからないことが1つあります。
「関数型への右辺値参照」とは何ですか?ドラフトでは文字通り何度も言及されています。なぜそのような概念が導入されたのですか?それの用途は何ですか?
c++ - ローカル変数の参照の折りたたみ
でパラメーター化された関数テンプレートでは、引数の値のカテゴリに応じてT
、型T&&
が右辺値参照である場合とそうでない場合があります。
型が自動的に推論されるローカル変数にも同じ規則が適用されますか?
c++11 - 右辺値参照によるオーバーロード
完璧な転送は素晴らしいです。しかし、テンプレート化されたタイプである何かに対して、完全に転送せず、代わりに単にオーバーロードしたい場合はどうすればよいですか?
最初のオーバーロードは完全な転送を呼び出すため、機能しません。最初の値が通常の左辺値参照である場合と非常によく似た動作が本当に必要です。ここで、Tは常に値型になります。
c++ - Visual Studio 2010 での右辺値参照
Visual Studio 2010 で実装された右辺値参照と C++11 で指定された右辺値参照の違いは何ですか? Visual Studio 2010 で再値参照を使用するときに、C++11 準拠のコンパイラでコンパイルした場合にソースが無効になったり、動作が異なったりする可能性がある特定の落とし穴はありますか?
operator-overloading - C++0x T operator+(const T&, T&&) パターン、まだ移動が必要ですか?
少し前に、2 項演算子を実装する通常のパターンmove
では、戻り値に final が必要だと言われました。
しかし今ではreturn
、コンパイラが戻り値を一時的なものとして扱う可能性があるという特別な規則があり、これは必要ではなく、単純なものreturn b
で十分です。
しかし、繰り返しますが、この関数にb
は名前があるため、LValueです。これは、コンパイラがそれを一時的であると見なすのを妨げており、move
必要です。
これは、C++0x 標準の最新バージョンでも当てはまりますか? 上記のパターンを実装する必要がありますか?move
c++ - 参照を参照する関数の直感的な理解
重複の可能性:
C ++11でのT&&の意味は何ですか?
どういうわけか、これは私の直感を逃しており、インターネット上で説明を見つけることができません。C ++関数が参照の参照を取得することはどういう意味ですか?例えば:
参照渡しの考え方を理解しているので、
動作し、私には直感的です。
c++ - C++0x の「id」関数
関数から右辺値参照を返すことに関するこの回答を読んで、どうすればid
C++0x で関数を記述できるか考えさせられました。
基本的に、私id
は何もしない関数、つまりプログラムに目に見える影響を与えない関数になりたいと思っています。
私の最初の試みは次のとおりです。
ただし、この場合、x2 はダングリング参照であり、X("x2")
「2 行目」が実行される前に破棄されるのではないかと心配しています。
したがって、ここでは、明らかid
に観察可能な効果があります。
id
C++0x で関数を作成するにはどうすればよいですか。特に、移動/コピー コンストラクターのない型で機能します。
c++ - 欠落している単項 std::copy の最適な実装
C++11 では、オブジェクトの不必要なコピーを回避しstd::move
、そうでなければコピーが発生する場合にそれらのセマンティクスを適用するためのセマンティクスが導入されています。ただし、デフォルトではなく、コピーが必要な場合もあります。
reverse
たとえば、この単純な の実装を考えてみましょう。範囲ベースfor
では完全転送が使用されるため、ループ内でコンテナーを変更すると破損します。
目標は、これを使用して修正することです
それは十分に単純に思えます…任意の引数を受け入れ、基になる型を取得し、一時的なコピーを返します。