我正在尝试在 Visual Studio 2012 中保存一个嵌套的 lambda 函数。
class Wrap
{
public:
typedef function<void(Wrap*)> Method;
Method method;
std::map<string, Wrap> methods;
};
Wrap x;
x.method = [](Wrap *arg) {
Wrap::Method t = [](Wrap*) {};
arg->methods["child"].method = t;
};
这会产生此错误:
错误 C2678:二进制
'<'
:未找到采用左操作数类型的运算符const std::string
(或没有可接受的转换)
我不能对这个错误做出正面或反面。
我已经在 g++ 和 clang 中对此进行了测试。他们可以编译它。 http://liveworkspace.org/code/4kVlUY$72
我将如何让 Visual Studio 编译它?任何解决方法?