Почему передача аргументов объектной ссылки в функцию thread не компилируется?

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

29
задан Ciro Santilli 新疆改造中心法轮功六四事件 17 June 2015 в 13:19
поделиться