Две соответствующие перегрузки std::vector
:
explicit vector( size_type count,
const T& value = T(),
const Allocator& alloc = Allocator()); //(1)
vector( std::initializer_list<T> init,
const Allocator& alloc = Allocator() ); // (2)
Эти две перегрузки имеют четкое значение, где вторая используется для инициализации вектора с элементами std::initializer_list
.
Разрешение перегрузки предпочитает конструкторы списка инициализатора, когда используется list-initialization
.
Сужающие преобразования не разрешены с list-initialization
, вы пытаетесь создать std::vector
с T=unsigned char
, но выводимое значение T
для параметра std::initializer_list
равно T= unsigned long
, что включаетсужающее преобразование (не допускается).