Betrachten Sie den folgenden Code:
%Vor%Das obige schlägt mit dem folgenden Compiler-Fehler fehl:
Fehler 1 Fehler C2664: 'ungültig Test2 :::: Betreiber () (std :: future & lt; _Ty & gt; & amp; & amp; Work) const ': kann den Parameter 1 nicht aus konvertieren 'std :: Zukunft & lt; _Ty & gt;' zu 'std :: future & lt; _Ty & gt; & amp; & amp; ' c: \ Programmdateien (x86) \ Microsoft Visual Studio 11.0 \ vc \ include \ xrefwrap 98 1 ConsoleApplication6
GCC 4.7.2 kompiliert gut Ссылка
Bevor ich fortfahre und es auf Microsoft Connect berichte:
1) Ist das ein Fehler auf VC11 oder ist das eigentlich Standardverhalten?
2) Kennt jemand eine Abhilfe dafür?
EDIT: Ich habe es auf Microsoft Connect hier . Um eine schnellere Lösung zu erhalten, sollten Sie diese aktualisieren.
Hm, es scheint ein Fehler in VC11 zu sein. Offenbar werden die Argumente von der Implementierung von async
nicht wirklich weitergeleitet, sondern kopiert.
Von meinem Kopf her würde ich einen kleinen Wrapper für den rvalue erstellen, der sich bewegt - konstruiert das Element, wenn der Wrapper kopiert wird:
%Vor% Dann müssten Sie Ihr Testszenario ändern, so dass das Lambda in Test2
den Wrapper anstelle von future
selbst verwendet:
Sieht ein bisschen hässlich aus, aber zumindest kompiliert es. Hoffe das hilft dir!
Tags und Links c++ c++11 visual-c++ future visual-c++-2012