地图值类型的选择类型
decltype for map value type?
这在 c++11 中合法吗:
std::unordered_map<X, Y> xy_map;
X my_x;
Y my_y;
xy_map.insert(decltype(xy_map)::value_type(my_x, my_y));
我在 gcc 4.6.3 中尝试过这个,但它不起作用。海湾合作委员会抱怨:
expected primary-expression before 'decltype'
我希望不要这样做:
typedef std::unordered_map<X, Y> MyMap;
xy_map.insert(MyMap::value_type(my_x, my_y));
我想 c++11 并不能解决这个问题或让它变得更容易。
代码C++正确。就像Basile在评论中提到的那样,这是一个针对GCC 4.7修复的错误。
这并不能回答您的问题,但它确实具有可能在编译器上工作的优点:
xy_map.emplace(my_x, my_y);
这将从给定的参数构造值类型。第一个参数构造键,其他参数用于值。这将有效地构建现有的std::pair
。所以不需要像decltype
之类的丑陋的东西。
相关文章:
- 在C++中,如何通过几种类型从元组中选择多个元素
- 表达式 SFINAE:如何根据类型是否包含具有一个或多个参数的函数来选择模板版本
- 如何为我的数组选择更大的数据类型?
- 根据模板类型选择类模板的成员类型?
- 使模板函数按函数参数选择类型
- 重载模板函数未为特定类型选择正确的版本
- 在运行时选择类成员的类型
- 如何在不同类型的值之间进行选择以传递给多态函数?
- 函数模板 - 使用同一类型调用时,使用不同的参数类型选择函数
- 使用声明类型选择函数专业化
- 根据输入类型选择正确的结构方法
- 编译器如何知道为多态类型选择哪个函数
- 根据按键类型选择地图或unordered_map
- 为什么Qt不应用这个样式表类型选择器?
- 为输入类型选择模板输出类型
- 可变constexpr类型选择器
- 如何根据返回类型选择重载
- 基于模板的动态数据类型选择
- 增强如何为类型选择创建映射
- 可变模板参数:我可以根据类型选择引用还是值