我可以从 nullptr 构造一个 string_view 吗?

问题描述 投票:0回答:2

我刚刚发现 xcode/clang 不允许从 char* nullptr 构造 std::string_view 。我希望这会将 size() 设置为 0 并为 data() 返回 null,这也是我的 Ubuntu Linux 机器上的 gcc 7.2 实现它的方式。

我检查了http://en.cppreference.com/但找不到任何对此的评论,那么标准的说法是什么?

c++ string view
2个回答
8
投票

嗯,是的,也不是。你不能将空指针传递给

std::string_view
的构造函数,因为这会违反它们的先决条件;请参阅 [string.view.cons].

中的构造函数 2 和 3

但是

std::string_view
的默认构造函数将其数据的大小设置为零和 null,因此您必须改用该构造函数,或者使用此解决方法/技巧:

std::string_view().swap(your_string);

0
投票

basic_string_view(nullptr)
在 C++23 中被定义为删除:

constexpr basic_string_view( std::nullptr_t ) = delete;

std::basic_string_view
不能由
nullptr
构造。

cppreference.com 上的

std::basic_string_view::basic_string_view

请参阅提案 P0903R2 了解更多信息和动机。

© www.soinside.com 2019 - 2024. All rights reserved.