C ++ - 我使用哪个编译器来使auto eq = [](...)语法起作用?

时间:2014-02-03 21:26:37

标签: c++ xcode compiler-construction

我正在尝试在答案here中列出的矢量代码中运行计数元素。

但是我在这个函数中遇到了编译错误:

auto h = [](const std::string* s) {
     return std::hash<std::string>()(*s);
};

Expected expression周围说明[ ]。我知道这与编译器有关。 我正在使用Xcode 5.0.2,因此我可以选择更改编译器(我认为)。

然后我在这一行得到了另一个编译错误:

std::unordered_map<const std::string*, size_t, decltype(h), decltype(eq)> m(v.size(), h, eq);

C++ requires a specifier for all declarations部分附近说明m(v.size(), h, eq)

为了让此代码正常工作,我应该确保编译Xcode的编译器是什么?

更新

这个auto = [ ](...)符号是否有特定的名称,我可以谷歌?

1 个答案:

答案 0 :(得分:1)

你知道什么标准考虑在内吗?

尝试强制使用C ++ 11,以涵盖这些lambda结构和unordered_map