ich folgende glauben eine billigste Art der Bindung lokale Variable Schließung sein:Günstigste Weise lokale Variable Schließung der Bindung
void ByRValueReference(A&& a) {
}
std::function<void()> CreateClosureByRValueReference() {
A a;
std::function<void()> f = std::bind(&ByRValueReference, std::move(a)); // !!!
return f;
}
Es ist jedoch nicht kompiliert unter Clang 3.1:
error: no viable conversion from '__bind<void (*)(A &&), A>' to 'std::function<void()>'
und gcc 4.6.1:
/usr/include/c++/4.6/functional:1778:2: error: no match for call to ‘(std::_Bind<void (*(A))(A&&)>)()’
Verstehe ich den Standard oder es ist nur gebrochene Standardbibliotheken?
Ich denke, seine Funktion '. –
RedX
Was hier eigentlich etwas teuer ist, ist 'std :: function'. Wenn Sie wirklich auf Effizienz achten, würde ich 'declltype (std :: bind (...)) zurückgeben' – pmr