このC++11初期化を変更することは可能ですか?
const std::map<int, std::map<int, std::string>> test =
{{1,
{{1, "bla"},
{2, "blie"}
}
},
{3,
{{1, "ha"},
{2, "hie"}
}
}
};
一時的なものを使用せずにBoost.Assignmentを使用して何らかの形式に?map_list_of
残念ながら、この方法でネストすることはできないようです。私が間違っている?
注:私はいくつかのひどいマクロの準備ができています。それが一般的に十分に機能する限り、それは問題ありません。ターゲットコンパイラはIntelC++ 2013および/またはMSVS2012であるため、可変個引数テンプレートはOKではありません。
編集:私が使用したい「理想的な」ラッパーインターフェイスは次のようになります。
//header
extern const std::map<int, std::map<int, std::string>> test;
// source file
/*something*/ test
/*something*/ 1,
/*something*/ 1, "bla" /*something*/
/*something*/ 2, "blie" /*something*/
/*something*/ 2 //etc...
/*something*/
空にすることができる場所。これには、C++11ブレースinitまたはの両方を使用する必要がありますboost::assign::map_list_of
。私はここのような手動の繰り返しを避けようとしています:https ://stackoverflow.com/a/1872506/256138