tutorial - ¿Por qué este código se compila(C++ 11) sin un error de falta de coincidencia de tipo?
visual studio installer (1)
No estás llamando al constructor de vector que toma una lista de initializer_list<char> . Ese constructor no es viable porque, como dijiste, no estás pasando una lista de caracteres.
Pero vector también tiene un constructor que lleva a los iteradores a una serie de elementos.
template< class InputIt >
vector( InputIt first, InputIt last,
const Allocator& alloc = Allocator() );
Desafortunadamente, este constructor coincide porque cada uno de los dos argumentos se convertirá implícitamente en char const * . Pero su código tiene un comportamiento indefinido porque los iteradores de inicio y fin que se pasan al constructor no son un rango válido.
std::vector<char> p = {"abc", "def"};
"abc" y "def" no son char , ¿por qué el compilador no me da un error sobre este tipo de discrepancia?