visual tutorial studio microsoft español descargar community c++ c++11 list-initialization

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?