std::vector<char> p = {"abc", "def"};
"abc"
和"def"
不是char
,为什么编译器没有给出关于此类型不匹配的错误?
答案 0 :(得分:57)
您没有调用vector
的{{1}}构造函数。那个构造函数不可行,因为正如你所说,你没有传递initializer_list<char>
的列表。
但是char
还有一个constructor,它将迭代器带到一系列元素中。
vector
不幸的是,这个构造函数匹配,因为两个参数都会隐式转换为template< class InputIt >
vector( InputIt first, InputIt last,
const Allocator& alloc = Allocator() );
。但是您的代码具有未定义的行为,因为传递给构造函数的开始和结束迭代器不是有效范围。