有一个从 std::string到 std::string_view的隐式转换,它不被认为是不安全的,尽管如果程序员不小心的话,这肯定会导致许多悬空引用。
另一方面,没有使用相同的参数从 std::string_view到 std::string的隐式转换,而是以完全相反的方式: 因为程序员可能不小心。
C + + 有了一个原始 const char*指针的替代品,这真是太可爱了,同时也让它变得非常混乱,简直就是一个彻头彻尾的东西:
const char*-> std::string: 好的std::string_view-> std::string: 没有std::string = const char*: 好的std::string = std::string_view: 好的std::string + = const char*: 好的std::string + = std::string_view: 好的const char* + std::string: 好的std::string_view + std::string: 没有std::string + const char*: 好的std::string + std::string_view: 没有我是漏掉了什么,还是这一切都是无稽之谈?
最后,如果没有使其类似于 const char*的所有关键部分,这个字符串视图有多大用处?为什么要把它整合到 Stdlib的生态系统中,而不做最后一步来完成它呢?毕竟,如果我们需要一个表示字符串片段的对象,我们可以编写自己的对象。事实上,很多图书馆在几年前就已经这样做了。制定标准的全部意义就是让它对于最广泛的用例是有用的,不是吗?
他们会在 C + + 23中修复这个吗?