c++ - 在 C++17 中没有从 std::string 到 std::string_view 的隐式转换(在 std::experimental::basic_string_view 中)

标签 c++ c++17

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

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

我相信它会大大提高这门课。特别是比较运算符系列,也不接受 std::string 既不是 lhs 也不是 rhs。

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

这个问题是关于为什么它被删除的。或者说不被采纳。

最佳答案

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

因此,it was decided (PDF)basic_string将提供到 basic_string_view 的转换.原始库基础版本将隐式转换置于 basic_string_view ,因为 TS 通常是一个扩展。如果不有效地派生该类型,它就不会影响现有类型。

关于c++ - 在 C++17 中没有从 std::string 到 std::string_view 的隐式转换(在 std::experimental::basic_string_view 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63235166/

相关文章:

c++ - 快速近似 float 除法

c++ - 为什么我的 C++ 程序从 long double 切换到 float128 时如此慢?

c++ - 收到 cl_build_program_failure 错误

c++ - 如何断言 constexpr if else 子句永远不会发生?

c++ - 为什么在 C++ 中++++i 是常规的而 i++++ 不是常规的?

c++ - 使用多个分隔符进行分隔

c++ - 使用 C++17,如何创建类型到值的编译时映射?

c++ - P1008 ("prohibit aggregates with user-declared constructors") 在实践中何时有用?

c++11 - 枚举对继承的支持

c++ - 如何在变体容器上使用 STL 算法