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

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

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

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

我相信它会大大改善 class。特别是比较运算符系列,也不接受 std::string 作为 lhsrhs.

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

这个问题是关于它被删除的原因。或者更确切地说没有被采纳。

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

因此,it was decided (PDF) basic_string 将提供到 basic_string_view 的转换。最初的 Library Fundamentals 版本将隐式转换放在 basic_string_view 上,因为 TS 通常是一个扩展。如果不有效地分叉该类型,它就不会影响现有类型。