c++ 17中没有从std::string到std::string_view的隐式转换(在std::experiment

No implicit conversion from std::string to std::string_view in C++17 (was in std::experimental::basic_string_view)

本文关键字:std string experiment 转换 view c++      更新时间:2023-10-16

我的问题是关于 c++ 17: http://en.cppreference.com/w/cpp/string/basic_string_view/basic_string_view

从std::basic_string到std::basic_string_view的隐式转换没有包含在后者的接口中,有什么警告?

我相信它会大大提高这门课。特别是比较操作符族,也不接受std::string为lhsrhs

库基础TS规范中有这样的转换:http://en.cppreference.com/w/cpp/experimental/basic_string_view/basic_string_view

这个问题是关于为什么它被删除。

basic_string_view被认为是较低级别的类。字符串容器的提供者负责提供到string_view的隐式转换。如果你有自己的字符串类型,那么你可能会给它一个explicit operator string_view()重载来执行隐式转换。

因此,决定(PDF) basic_string将提供到basic_string_view的转换。最初的Library Fundamentals版本将隐式转换放在basic_string_view上,因为TS通常是一个扩展。它不能影响现有的类型,除非有效地派生该类型。