Как мне написать шаблонную функцию, которая работает с произвольным контейнером произвольного типа? Например, как мне обобщить эту фиктивную функцию
template <typename Element>
void print_size(const std::vector<Element> & a)
{
cout << a.size() << endl;
}
до
template <template<typename> class Container, typename Element>
void print_size(const Container<Element> & a)
{
cout << a.size() << endl;
}
Вот типичное использование
std::vector<std::string> f;
print_size(f)
Это дает ошибку
tests/t_distances.cpp:110:12: error: no matching function for call to ‘print(std::vector<std::basic_string<char> >&)’. I'm guessing I must tell the compiler something more specific about what types that are allowed.
Как называется вариант использования шаблона и как мне это исправить?