Я пытаюсь создать функцию, которая получает ключи от std::map
или std::unordered_map
. Я мог бы использовать простую перегрузку, но сначала мне хотелось бы узнать, что не так с этим кодом.
template<typename K, typename V, template<typename, typename> class TContainer>
std::vector<K> getKeys(const TContainer<K, V>& mMap)
{
std::vector<K> result;
for(const auto& itr(std::begin(mMap)); itr != std::end(mMap); ++itr) result.push_back(itr->first);
return result;
}
При вызове его с std::unordered_map
, даже при указании всех типов шаблонов вручную, clang ++ 3.4 говорит:
аргумент шаблона шаблона имеет другие параметры шаблона, чем соответствующий параметр шаблона шаблона.