新しいC++ 11 std::thread
インターフェイスを使用して問題が発生しました。
std::ostream
への参照をスレッドが実行する関数に渡す方法を理解できません。オブジェクト参照引数をスレッド関数に渡すのがコンパイルに失敗するのはなぜですか?
は、ここで整数(GCC 4.6の下で期待通りにコンパイルして仕事)を渡すと例を示します
void foo(int &i) {
/** do something with i **/
std::cout << i << std::endl;
}
int k = 10;
std::thread t(foo, k);
をしかし、私はそれがコンパイルされないのostreamを渡ししようとすると:
void foo(std::ostream &os) {
/** do something with os **/
os << "This should be printed to os" << std::endl;
}
std::thread t(foo, std::cout);
がありますちょうどそれをする方法、またはそれは全くできないのですか?
NB:コンパイルエラーから
プリミティブの場合:http://stackoverflow.com/questions/5116756/difference-between-pointer-and-reference-as-thread-parameter –