//------------------------------------------------------------------------------
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': no se puede miembro privado de acceso declarado en la clase 'A'¿Por qué C++ 11 no puede mover un functor no copiable a una función std ::?
Parece que cuando capturo algo por referencia o const
PUEDO lambda no copiable. Sin embargo, cuando lo hago, realmente funciona para darle un std::function
.
Como [solución temporal] (https://gist.github.com/vmilea/5815777), puede poner un adaptador que se puede copiar entre std :: function y su functor. El adaptador tiene un constructor de copia ficticio (mover en la copia) y tira si se copia. –