我有以下代码:构造错误:错误:预期“”或“...”前的数字常量
#include <memory>
#include <functional>
#include <string>
#include <unordered_map>
typedef std::shared_ptr<std::string> StrPtr;
auto hash1 = [](const StrPtr ptr) { return std::hash<std::string>()(*ptr); };
...
class Actor {
...
private:
std::unordered_multimap<StrPtr,StrPtr,decltype(hash1)> set(250000,hash1);
...
};
如果我想编译它,我得到以下错误:
Actor.hpp:15:68: error: expected identifier before numeric constant
std::unordered_multimap<StrPtr,StrPtr,decltype(hash1)> set(250000,hash1);
^
Actor.hpp:15:68: error: expected ‘,’ or ‘...’ before numeric constant
看看unordered_multimap的构造函数定义,似乎与我的初始化没有矛盾。这里有什么问题?
我用gcc编译4.8
IIRC,如果你想进行内联初始化,你需要使用花括号'{}'。另外,请记住GCC 4.8是旧的,并且不支持所有的C++ 11,所以它可能根本不支持内联初始化。 –
我相信编译器会非常困惑,因为它认为你声明了一个成员函数。 – molbdnilo
使用'gcc version 5.3.1'给出了相同的结果。仍然我不明白为什么这不是有效的语法 – FloriHe