char const* types[] = { "char", "short", "int", "long", "float", "double", "void"};
std::set<std::string> ReservedWords;
ReservedWords.insert(std::begin(types),std::end(types));
types
ここでの最初の2行は、変数(および)を宣言しているため、宣言ですReservedWords
。3行目は宣言ではなく、単なる式ステートメントであるため、関数の外部に表示することは違法です。
あなたは次のようなことをすることができます:
char const* types[] = { "char", "short", "int", "long", "float", "double", "void"};
std::set<std::string> MakeReservedWords() {
std::set<std::string> tmp;
tmp.insert(std::begin(types), std::end(types));
return tmp;
}
std::set<std::string> ReservedWords(MakeReservedWords());
C ++ 11を使用している場合、これを実行できるはずです。
std::set<std::string> ReservedWords { "char", "short", "int", "long", "float", "double", "void"};
コンパイラがC++11のこの部分をサポートしていない場合は、次のようなものを受け入れる必要があります(@juanchopanzaによって提案されているように)。
char const* types[] = { "char", "short", "int", "long", "float", "double", "void"};
std::set<std::string> ReservedWords(std::begin(types), std::end(types));