Ответ 1
Вы не вызываете vector
конструктор, который принимает initializer_list<char>
. Этот конструктор не является жизнеспособным, потому что, как вы сказали, вы не передаете список char
.
Но vector
также имеет конструктор, который принимает итераторы в ряд элементов.
template< class InputIt >
vector( InputIt first, InputIt last,
const Allocator& alloc = Allocator() );
К сожалению, этот конструктор соответствует, потому что два аргумента будут каждый неявно преобразовывать в char const *
. Но ваш код имеет неопределенное поведение, поскольку начальные и конечные итераторы, передаваемые конструктору, не являются допустимым диапазоном.