【发布时间】:2013-01-25 04:50:04
【问题描述】:
我正在尝试在 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;
};
产生此错误的原因:
error C2678: binary
'<': no operator found 接受const std::string类型的左操作数(或没有可接受的转换)
我无法确定这个错误的正面或反面。
我已经在 g++ 和 clang 中对此进行了测试。他们可以编译它。 http://liveworkspace.org/code/4kVlUY$72
我将如何让 Visual Studio 编译它?有什么解决方法吗?
【问题讨论】:
标签: c++ c++11 lambda visual-studio-2012