Template Template C ++ Function

¿Cómo escribo una función de plantilla que opera en un contenedor arbitrario de un tipo arbitrario? Por ejemplo, ¿cómo hagogeneraliza esta función ficticia

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;
}

Aquí hay un uso típico

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

Esto da error

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.

Que es estovariante de uso de plantilla llamado y ¿cómo lo soluciono?

Respuestas a la pregunta(5)

Su respuesta a la pregunta