Visual Studio 2012 でネストされたラムダ関数を保存しようとしています。
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でコンパイルするにはどうすればよいですか? 回避策はありますか?