我認爲這的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'。然後,剩下的所有內容都是與這些類型相關的錯誤消息,並且確實可以進行搜索。 :) –