Nachstehend ist mir ein Fehler in Visual Studio 2012.Mit std :: Umzug ein std :: unique_ptr senden std :: thread in VS1012
void do_something(std::unique_ptr<int> i);
std::unique_ptr<int> i(new int);
std::thread(do_something, std::move(i));
Fehler 3 Fehler C2248: ‚std: : unique_ptr < _Ty> :: unique_ptr ': kann nicht auf privates Mitglied zugreifen, das in der Klasse' std :: unique_ptr < _Ty> 'c: \ Programmdateien (x86) Microsoft Visual Studio 11.0 \ vc \ include \ functional 1152 1 Scratch It ist hilfreich (!) zeigt auf diese Definition in funktionalen: _VARIADIC_EXPAND_0X (_CLASS_BIND,,,,)
Das ist in Ordnung:
do_something(std::move(i));
Was mache ich falsch?
Ich habe gehört, dass GCC 4.6 einen ähnlichen Fehler hatte, der in 4.7 behoben wurde: "Der std :: thread muss erkennen, wenn ein rvalue übergeben wird (nicht kopieren) es in seinen internen Speicher und sollte dann weiterleiten zur verpackten Funktion wieder als rvalue "Danke an Jon Wakely –
doctorlove