#include <functional>
int main()
{
struct A
{
A() = default;
A(A&&) = default;
A& operator=(A&&) = default;
A(A const&&) = delete;
A& operator=(A const&) = delete;
};
auto a = A{};
auto f = [a = std::move(a)] {}; // ok
std::function<void()> fn3 = [a = std::move(a)] {}; // error
}
Both of gcc
and clang
reject the code. See online demo
Why can't std::function
accept a movable but non-copyable lambda object?
Aucun commentaire:
Enregistrer un commentaire