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

时间:2016-08-29 13:50:34

标签: 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的隐式转换有什么警告,它不包含在后者的接口中?

我相信这会大大改善这门课程。特别是比较运算符族,也不接受std :: string既不是 lhs 也不是 rhs

库基础知识TS 规范中存在此类转换:http://en.cppreference.com/w/cpp/experimental/basic_string_view/basic_string_view

这个问题是为什么它被删除了。或者更不习惯。

1 个答案:

答案 0 :(得分:16)

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

因此basic_string basic_string_viewbasic_string_view转换为$arr = [ 0 => 'value1', 1 => 'value2', 2 => 'value3' ]; 。原始的Library Fundamentals版本将隐式转换放在DB::table('users')->select('value1', 'value2', 'value3') 上,因为TS通常是扩展名。如果没有有效地分析该类型,它就不会影响现有类型。