我刚刚发现 xcode/clang 不允许从 char* nullptr 构造 std::string_view。我希望这将 size() 设置为 0 并为 data() 返回空值,这也是我的 Ubuntu Linux 机器上的 gcc 7.2 如何实现它。
我检查了http://en.cppreference.com/但找不到任何关于此的评论,那么标准说法是什么?
嗯,是的,也不是。您不能将空指针传递给std::string_view的构造函数,因为这会违反它们的先决条件;请参阅[string.view.cons]中的构造函数 2 和 3。
但是std::string_view的默认构造函数将其数据的大小设置为零和 null,因此您必须改用该构造函数,或者使用以下解决方法/技巧:
std::string_view().swap(your_string);
Run Code Online (Sandbox Code Playgroud)