gpt4 book ai didi

c++ - 固定大小数组的非成员 std::empty 重载的返回值

转载 作者:行者123 更新时间:2023-11-30 01:50:17 25 4
gpt4 key购买 nike

[已接受] 标准论文 N4280添加几个新的非成员函数以折叠到 C++17 中。

有注释指出每个新的非成员函数的正确返回值,特别是固定大小数组的 std::empty 重载让我感到困惑。该论文建议该重载的返回值将始终为 false所有 固定大小的数组永远不会为空。

为什么会这样?据我所知,有一个零大小的数组是可能的(尽管可能没用),如 int x[0]; 中,我称之为空。

作为引用,我所说的特定重载是:

template <class T, size_t N> constexpr bool empty(const T (&array)[N]) noexcept;

最佳答案

它总是会返回 false,因为数组不能声明为包含零个元素。来自 C++11 标准(我手边没有更新的标准,我不认为这会有所改变):

In a declaration T D where D has the form

    D1 [ constant-expressionopt ] attribute-specifier-seqopt

... If the constant-expression is present, it shall be an integral constant expression and its value shall be greater than zero. - §8.3.4 [dcl.array]

因此,在符合标准的实现中,此重载将始终返回 true。

关于c++ - 固定大小数组的非成员 std::empty 重载的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27632808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com