unção Template C ++ do Modelo

Como escrevo uma função de modelo que opera em um contêiner arbitrário de um tipo arbitrário? Por exemplo, como eugeneraliza esta função fictícia

template <typename Element>
void print_size(const std::vector<Element> & a)
{
    cout << a.size() << endl;
}

par

template <template<typename> class Container, typename Element>
void print_size(const Container<Element> & a)
{
    cout << a.size() << endl;
}

Aqui é um uso típico

std::vector<std::string> f;
print_size(f)

Este erro

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.

O que é isso variante do modelo de uso ligou e como faço para corrigir isso?

questionAnswers(5)

yourAnswerToTheQuestion