map::emplace で見つけることができるすべての例は、単一の引数を取るコンストラクターを持つかなり単純な型を使用しています。
std::map<std::string, std::string> foo;
foo.emplace("a", "b");
値型コンストラクターに 2 つのパラメーターが必要であるとします。一体、本当に簡単にしましょう。値のタイプが であるとしますstd::pair<std::string, double>
。std::map<string, pair<string, double> >::emplace()
マップ内で値の型をインプレースで構築するにはどうすればよいですか?
私はこれがうまくいかないことを知っています:
std::map<std::string, std::pair<std::string, double> > foo;
foo.emplace("a", "b", 1.0);
少なくとも、g++ 4.8.2 では大声で失敗します。これは C++11 でも可能ですか?