一个集装箱的emplace
member 使用提供的参数构造一个元素。
The value_type
你的地图是std::pair<const int, Foo>
并且该类型没有接受参数的构造函数{ 5, 5, 'a', 'b' }
即这行不通:
std::pair<const int, Foo> value{ 5, 5, 'a', 'b' };
map.emplace(value);
你需要打电话emplace
与匹配其中之一的参数pair
的构造函数。
通过符合 C++11 的实现,您可以使用:
mymap.emplace(std::piecewise_construct, std::make_tuple(5), std::make_tuple(5, 'a', 'b'));
但 GCC 4.7 也不支持该语法(GCC 4.8 发布后将支持。)