Warum funktioniert die übergabe-Objekt-Referenz Argumente der thread-Funktion kann nicht kompilieren?

Habe ich ein problem mit den neuen c++11 std::thread - Schnittstelle.
Ich kann nicht herausfinden, wie übergeben Sie einen Verweis auf eine std::ostream zu der Funktion, die der thread ausführen soll.

Hier ist ein Beispiel mit der übergabe eines integers(kompiliert und funktioniert wie erwartet unter gcc 4.6) :

void foo(int &i) {
    /** do something with i **/
    std::cout << i << std::endl;
}

int k = 10;
std::thread t(foo, k);

Aber wenn ich versuche die übergabe eines ostream es nicht kompilieren :

void foo(std::ostream &os) {
    /** do something with os **/
    os << "This should be printed to os" << std::endl;
}

std::thread t(foo, std::cout);

Gibt es eine Möglichkeit, genau das zu tun, oder ist es überhaupt nicht möglich ??

NB: aus der Kompilierung Fehler scheint zu kommen aus eine gelöschte Konstruktor...

InformationsquelleAutor Benjamin A. | 2011-11-28

Schreibe einen Kommentar