c++ c++17

¿Tiene sentido usar const std:: string & argumentos en C++ 17?



c++17 (1)

Al obtener string_view en C ++ 17, obtuvimos un método barato de pasar std::string y char* a funciones que no toman posesión de la cadena y evitan hacer copias temporales. Al usar std::string pasado por valor y std::move obtenemos el std::move explícito y rápido de la propiedad de cadena para las referencias de valor r y l.

Mi pregunta es: ¿hay algún beneficio en el uso de const std::string& como cualquier parámetro de función en el nuevo estándar C ++?


Si.

El problema con std::string_view es que no recuerda si apunta a una cadena terminada en nulo o no.

Si está escribiendo un contenedor para una API C que utiliza cadenas terminadas en nulo, debería copiar constantemente sus std::string_view s en std::string s para asegurarse de que tiene terminadores nulos.