c++ c++17

No hay conversión implícita de std:: string a std:: string_view en C++ 17(estaba en std:: experimental:: basic_string_view)



c++17 (1)

Mi pregunta está relacionada con C ++ 17 : http://en.cppreference.com/w/cpp/string/basic_string_view/basic_string_view

¿Cuál es la advertencia de la conversión implícita de std :: basic_string a std :: basic_string_view que no se incluyó en la interfaz de este último?

Creo que mejoraría enormemente esta clase. Especialmente la familia de operadores de comparación que, además, no aceptan std :: string como ni lhs ni rhs .

Existe tal conversión en la especificación de TS de los fundamentos de la biblioteca : http://en.cppreference.com/w/cpp/experimental/basic_string_view/basic_string_view

Esta pregunta es acerca de por qué se eliminó. O más bien no adoptado.


basic_string_view se considera la clase de nivel inferior. Los proveedores de contenedores de cadenas son los responsables de proporcionar conversiones implícitas a string_view . Si tiene su propio tipo de cadena, entonces le daría una sobrecarga de operator string_view() posiblemente explicit para realizar una conversión implícita.

Como tal, se decidió (PDF) que basic_string proporcionaría la conversión a basic_string_view . La versión original de Library Fundamentals puso la conversión implícita en basic_string_view , porque un TS suele ser una extensión. No puede afectar a un tipo existente sin forzar efectivamente ese tipo.