He llegado a un problema con la nueva interfaz C++ 11 std::thread
. No se puede averiguar cómo pasar una referencia a std::ostream
a la función que ejecutará el subproceso¿Por qué no se compila la referencia de los argumentos de referencia del objeto al hilo?
He aquí un ejemplo con el paso de un número entero (compilar y funciona como se espera en virtud de gcc 4.6):
void foo(int &i) {
/** do something with i **/
std::cout << i << std::endl;
}
int k = 10;
std::thread t(foo, k);
pero cuando intento pasar una ostream no compila:
void foo(std::ostream &os) {
/** do something with os **/
os << "This should be printed to os" << std::endl;
}
std::thread t(foo, std::cout);
¿Hay una forma de hacerlo, o no es posible en absoluto?
NB: desde el error de compilación que parece venir de un constructor borrado ...
Para primitivos: http://stackoverflow.com/questions/5116756/difference-between-pointer-and-reference-as-thread-parameter –