私のコードにstd::move
を使用しようとしていますが、使用しているコンパイラ(g ++ 4.4)はサポートしていません。 boost::move
はstd::move
を完全に代用できますか?ありがとう。std :: moveの対応部分がブーストライブラリ
答えて
std::move
(およびC++ 0xサポートが有効な場合はboost::move
)は、T&
からT&&
へのキャストのみです。実際には何も動かない。これは、特定のタイプのポインタT&&
がコンパイラによってサポートされていなければならないことを意味します。 GCCはバージョン4.3以降のr値参照をサポートしているので、boost版はうまくいくはずです。
しかし、std::move
を#include <utility>
から使用できない理由はありますか?
http://en.cppreference.com/w/cpp/utility/move
あなただけのgcc 4.4が持っている限られたC++ 11のサポートを有効にするために、コンパイラオプションとして-std=c++0x
を指定してくださいする必要があります。
C++ 03の 'boost :: move'では**キャスト**だけではないので、そこで動作します。 Boost.Moveは、C++ 0xコンパイラで真のrvalue参照に拡張され、C++ 03コンパイラでrvalue参照クラスと変換演算子をエミュレートするマクロに基づいています。 [Boost docs](http://www.boost.org/doc/libs/1_59_0_b1/doc/html/move/how_the_library_works.html)を参照してください。 – nugae
@nugaeはい、あなたは絶対に正しいです。 –
はい、それができ
Boost.Moveは何ですか?
Rvalue参照は、C++値の移動セマンティクス を有効にする主要なC++ 0x機能です。しかし、我々はC++ 0xコンパイラを移動semanaticsの の利点を取る必要はありません。 Boost.MoveはC++ 0xの移動セマンティクスをエミュレートします。 はC++ 03のコンパイラであり、 はC++ 03とC++ 0xコンパイラで最適に機能する移植可能なコードを書くことができます。
出典: http://www.boost.org/doc/libs/1_59_0_b1/doc/html/move.html
- 1. copy対int std :: move for ints
- 2. std :: move Vs std :: forward
- 3. std :: thread moveコンストラクタ
- 4. std :: move returnステートメント
- 5. std :: unique_ptr :: release()vs std :: move()
- 6. std :: move in-place operation
- 7. rvalue refsとstd :: move
- 8. std :: vector、std :: moveとポインタの無効化
- 9. std :: moveを使って
- 10. std :: moveがstd :: listと一緒に動作しない理由
- 11. std :: sortにmoveコンストラクタとmove-assignmentを使用させるには?
- 12. 型キャストとstd :: move()の違いは?
- 13. この場合のstd :: moveとstd :: refの相違点
- 14. Qtのはstd :: unordered_setアナログ/対応
- 15. gccで `move 'に対応しない接尾辞やオペランド
- 16. std :: string nothrow move assignableまたはcomparable?
- 17. パラメータパックに対応するstd :: is_base_of()
- 18. HTMLの "for"属性のWPFラベルの対応部分
- 19. wss:bindingのJava-configの対応部分ですか?
- 20. Mac OSX上のWindowsサービスの対応部分
- 21. matlabの対応する定数部分の補間
- 22. PYTHONPATH C++ライブラリをインポートするための対応部分
- 23. numpy apply_along_axisのtheano対応部分は何ですか?
- 24. std :: move()の代わりに何が使えますか?
- 25. move ctors /代入演算子でstd :: moveまたはstd :: forwardを使うべきですか?
- 26. std :: promiseをスレッドに渡すには? std :: moveまたはstd :: shared_ptrによって?
- 27. std :: mapの部分非直列化
- 28. ブーストライブラリの問題
- 29. 反応成分対容器
- 30. C++:STD対のstd ::ベクトル::リスト
'G ++ 4.4'は非常に古いです。新しいバージョンへの移行を検討する – alexeykuzmin0