次のコードをコンパイルして取得できます。
enum E {a, b, c};
void f()
{
E e;
std::function<void()> f = [&]() { e = a; };
}
ただし、次のものではありません。
void f()
{
enum E {a, b, c};
E e;
std::function<void()> f = [&]() { e = a; };
}
次のコンパイラ エラーが発生します。
1>test.cpp(5): error C2665: '`anonymous-namespace'::<lambda1>::<lambda1>' : none of the 2 overloads could convert all the argument types
1> test.cpp(5): could be '`anonymous-namespace'::<lambda1>::(f::E &,f::E &)'
1> while trying to match the argument list '(f::E, f::E)'
そのエラーは予想されるものですか、それともバグですか?