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.