私は次のコードを持っている:コンストラクタエラー:エラー:予想「」または「...」数値定数の前に
#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