Я столкнулся с проблемой при использовании нового интерфейса 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. Похоже, что из-за ошибки компиляции произошел удаленный конструктор ...