Versão somente mover da função std ::

Porquestd::function é copiável, o padrão exige que as chamadas usadas para construí-lo também sejam copiáveis:

n337 (20.8.11.2.1)

template<class F> function(F f);

Requer:F deve ser CopyConstructible.f deve ser Callable (20.8.11.2) para tipos de argumentoArgTypes e tipo de retornoR. O construtor de cópias e o destruidor de A não devem lançar exceções.

Isso implica que não é possível formar umstd::function de um objeto de ligação não copiável ou de uma lambda que capturou um tipo somente de movimentação, comostd::unique_ptr.

Parece possível implementar um invólucro de somente movimentação para chamadas que podem ser movidas. Existe um equivalente somente de movimentação da biblioteca padrão parastd::function ou, existe uma solução comum para esse problema?

questionAnswers(2)

yourAnswerToTheQuestion