//------------------------------------------------------------------------------
struct A
{
A(){}
A(A&&){}
A& operator=(A&&){return *this;}
void operator()(){}
private:
A(const A&);
A& operator=(const A&);
int x;
};
//------------------------------------------------------------------------------
int main()
{
A a;
std::function<void()> func(std::move(a));
}
‚A :: A‘: kann nicht privat Mitglied in der Klasse erklärte Zugriff ‚A‘Warum kann C++ 11 einen nicht kopierbaren Funktor nicht in eine std :: -Funktion verschieben?
Es scheint, als wenn ich etwas mit Bezug zu erfassen oder const
ich ein nicht-kopierbaren Lambda machen kann. Jedoch, wenn ich das tue, funktioniert es tatsächlich, es std::function
zu geben.
Als [Workaround] (https://gist.github.com/vmilea/5815777) könnten Sie einen kopierbaren Adapter zwischen std :: function und Ihrem Funktor einfügen. Der Adapter verfügt über einen Dummykopiekonstruktor (Kopie kopieren) und löst aus, wenn er kopiert wird. –