将nullptr转换为std :: span

问题描述

我有一个const z* zs = nullptr;

我想将zs转换为std::span

当我尝试做std::span<const z>(zs)时,我收到一条错误消息

错误:没有匹配的函数可以调用“ std :: span :: span(const z * const&)”

如何将zs转换为std::span

我尝试std::span<const z>(zs[0])似乎可以编译。这样正确吗?

解决方法

您需要提供一个长度来与指针一起使用。空指针指向0个元素。您要在某个地方重新分配sz吗?

没有任何参数构造一个空的span

std::span<const z>{}
,

std::span有一个构造函数,该构造函数需要一个指针和一个大小,请使用该构造函数:

std::span<const z>(zs,0)