【发布时间】:2012-04-24 14:15:56
【问题描述】:
这在 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 中尝试过,但没有成功。 GCC 抱怨:
expected primary-expression before 'decltype'
我希望不要这样做:
typedef std::unordered_map<X, Y> MyMap;
xy_map.insert(MyMap::value_type(my_x, my_y));
我猜 c++11 并没有解决这个问题或让它变得更容易。
【问题讨论】:
-
@BasileStarynkevitch 我不能使用 gcc 4.7 因为他们破坏了那里的其他东西:stackoverflow.com/questions/8297652/error-boost-disable-threads :(
-
你可能已经知道了,但通常的方法是使用
std::make_pair(my_x, my_y)