strings poner palabras numeros invertir ingresar ejercicios convertir concatenar como caracteres cadena c++ string c++17 string-view

c++ - poner - ¿Por qué no hay soporte para concatenar std:: string y std:: string_view?



ejercicios c++ strings (1)

Desde C ++ 1z, tenemos std::string_view , una vista liviana en una secuencia contigua de caracteres que evita la copia innecesaria de datos. En lugar de tener un const std::string& parámetro, ahora se recomienda usar std::string_view .

Sin embargo, uno descubre rápidamente que cambiar de const std::string& a std::string_view rompe el código que usa la concatenación de cadenas, ya que no hay soporte para concatenar std::string y std::string_view :

std::string{"abc"} + std::string_view{"def"}; // ill-formed (fails to compile) std::string_view{"abc"} + std::string{"def"}; // ill-formed (fails to compile)

¿Por qué no hay soporte para concatenar std::string y std::string_view en el estándar?


La razón de esto se da en n3512 string_ref: una referencia no propietaria a una cadena, revisión 2 por Jeffrey Yasskin:

También omití el operador + (basic_string, basic_string_ref) porque LLVM devuelve un objeto ligero de esta sobrecarga y solo realiza la concatenación perezosamente. Si definimos esta sobrecarga, tendremos dificultades para introducir esa concatenación liviana más adelante.

Más tarde se sugirió en la lista de correo de las groups.google.com/a/isocpp.org/forum/#!topic/std-proposals/… estándar para agregar estas sobrecargas de operadores al estándar.