我认为这的std ::地图密钥提取到的std ::载体应具有不指定--std =的C++ 0x标志GCC(4.6)的工作,但它没有。任何想法为什么?为什么这个std :: map键提取函数需要--std = C++?
template <typename Map, typename Container>
void extract_map_keys(const Map& m, Container& c) {
struct get_key {
typename Map::key_type operator()
(const typename Map::value_type& p) const {
return p.first;
}
};
transform(m.begin(), m.end(), back_inserter(c), get_key());
}
谢谢!
你可以指定什么“不工作”的意思?某种形式的错误描述使得这个问题和下面的答案可以找到,这使得这个更有用。 –
@UlrichEckhardt“不起作用”意味着一个模糊的模板实例化错误,只要我在命令行中添加--std = C++ 0x,就会立即消失。恐怕,添加错误消息不会使这个更容易搜索。 –
它实际上可以读取这些错误。所有你需要做的就是将它们构造一下,这样你就可以看到填充一个页面的模板的嵌套模板只是一个'map'。然后,剩下的所有内容都是与这些类型相关的错误消息,并且确实可以进行搜索。 :) –