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

18
我的问题涉及到 C++17http://en.cppreference.com/w/cpp/string/basic_string_view/basic_string_view 从std::basic_string到std::basic_string_view的隐式转换有什么限制,以至于它没有被包含在后者的接口中?
我认为这会极大地改善这个类。特别是比较运算符族,也不接受std::string作为lhsrhs
library fundamentals TS规范中存在这样的转换:http://en.cppreference.com/w/cpp/experimental/basic_string_view/basic_string_view 这个问题是关于为什么它被删除了。或者说没有被采纳。

C++17的转换方向相反,从string_view到string。 - Cubbi
@Cubbi 首先,这个转换是明确的。对于第二个,将std::string_view转换为std::string将是一种相当昂贵的方式来比较它们。 - GreenScape
9
决定由basic_string负责这个操作。 - T.C.
1
@T.C. 这基本上回答了我的问题。或者说是我的疏忽。你能这样做吗?我会接受的。 - GreenScape
1
@T.C.:这是一个非常好的机会,可以通过电话回答问题... - Kerrek SB
1个回答

18

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

因此,决定(PDF)basic_string 提供到 basic_string_view 的转换。最初的库基础版本将隐式转换放在了 basic_string_view 上,因为 TS 通常是扩展。它不能影响现有类型而不实际上分叉该类型。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接