s = "some";
foo(s);
}
можете объяснить, как конкретно здесь string преобразуется в string_view?
благодоря не-explicit конструктору std::string_view от std::basic_string<...>
произойдет f(std::string_view(s)) или s скопируется в foo и там вызовется конструктор?
s в данном коде копируеться ровно 0 раз будет скорее int main() { std::string s = "some"; foo(std::string_view{s}); }
Посмотрев в cppreference не нашел конструктор от basic_string. Но оператор в std::basic_string приводящий к std::basic_strng_view есть. Значит он и вызывается вместо конструктора от обычной строки?
Значит он самый. Не изучал какие там конструкторы и прочее есть)
Он. Полезный ресурс, который в данном случае хорошо показывает, где что там происходит: https://cppinsights.io/s/753728e5
разве? s будет скопировано в строку. https://godbolt.org/z/Esbh7vrea
Ну речь о том, что сама строка не будет скопирована.
А строку-то зачем копировать? объект типа string ровно 1
Обсуждают сегодня