Проблема в типе аргумента print_size
.Ваш auto w = {1, 2, 3};
имеет тип std::initializer_list<int>
, и он не соответствует vector<T>
, нет автоматического преобразования.
Таким образом, вы можете исправить print_size
следующим образом:
template<class T>
void print_size(std::initializer_list<T> a)
{
std::cout << a.size() << '\n';
}
Или еще лучше изменить способ параметризации шаблона:
template<class T>
void print_size(const T& a)
{
std::cout << a.size() << '\n';
}