- 【初心者歓迎】C/C++室 Ver.98【環境依存OK】 [無断転載禁止]©2ch.net
525 :デフォルトの名無しさん[sage]:2016/06/30(木) 16:00:56.66 ID:I86oszq6 - #include <bits/stdc++.h>
class hoge { public: void aho() { std::cout << "ahooo" << std::endl; } }; int main() { /* hoge h; std::thread th(&hoge::aho, h); */ std::thread th(&hoge::aho, std::move(hoge{})); th.join(); return 0; } すみません、質問させてください。 右辺値参照の使い方がぼんやりとしかわからず… スレッドにメンバ関数を渡したいとき一時オブジェクトを作る代わりに右辺値参照を利用する 上記のような使い方は正しい使い方でしょうか。
|
- 【初心者歓迎】C/C++室 Ver.98【環境依存OK】 [無断転載禁止]©2ch.net
526 :デフォルトの名無しさん[sage]:2016/06/30(木) 16:25:05.04 ID:I86oszq6 - すみません自己解決しました
std::moveなくても右辺値ですね(;´Д`) #include <bits/stdc++.h> class hoge { public: hoge(){std::cout << "ctor" << std::endl;} hoge(const hoge&){std::cout << "cctor" << std::endl;} hoge(hoge&&){std::cout << "mtor" << std::endl;}; hoge& operator=(hoge&&){std::cout << "mctor" << std::endl; return *this;}; ~hoge(){std::cout << "dtor" << std::endl;} void aho() { std::cout << "ahooo" << std::endl; } }; int main() { // 出力はどちらも同じ std::thread th(&hoge::aho, hoge{}); //std::thread th(&hoge::aho, std::move(hoge{})); th.join(); return 0; }
|
- Boost総合スレ part10
311 :デフォルトの名無しさん[sage]:2016/06/30(木) 16:51:13.09 ID:I86oszq6 - beginとかendとか書くの面倒だな〜と思ってboost.range.algorithmsを調べてると
途中から|=とかadaptorsとか出てくるのですが これは同じライブラリの話なのでしょうか? もしくは全く別の二つのライブラリなのでしょうか?
|
- 【初心者歓迎】C/C++室 Ver.98【環境依存OK】 [無断転載禁止]©2ch.net
532 :デフォルトの名無しさん[sage]:2016/06/30(木) 21:06:51.98 ID:I86oszq6 - >>529
!? hoge(hoge&&){std::cout << "mtor" << std::endl;}; ここの引数(今はないけど)が左辺値になってしまうということですか? std::moveがある場合と比べて余分なコピーが発生するのでしょうか? 質問ばっかですみません。
|
- 【初心者歓迎】C/C++室 Ver.98【環境依存OK】 [無断転載禁止]©2ch.net
533 :532[sage]:2016/06/30(木) 21:07:37.99 ID:I86oszq6 - 左辺値→左辺値参照
|