据我了解,+
lambda 表达式之前的运算符将其解析为函数指针重载。(帖子)
但是我不太明白为什么它不适用于通用 lambda。例如:
auto foo = +[](int a) { std::cout << "foo " << a << std::endl; }; // Valid
auto bar = +[](auto a) { std::cout << "bar " << a << std::endl; }; // Fails
// compiler error:
// no match for ‘operator+’ (operand type is ‘main()::<lambda(auto:1)>’)
这背后的直觉是什么?