std::array<int,0>
大小为零的数组是什么意思?std ::大小为零的数组
在发布之前,我已经经历过类似的问题,并且所有这些 问题都是关于简单数组类型和C语言的,并且大多数问题都是非法的。但在C++ array<int,0>
是允许的。
作为每cppreference.com
没有为一个零长度的阵列(N == 0)的特殊情况。在这种情况下,
array.begin() == array.end()
,这是一些独特的价值。调用front()
或back()
对零大小数组的影响未定义。
为什么它不被定义为非法?
因为模板化代码可以从这样的事情中获益。 – sbabbi 2015-03-08 16:56:15
为什么它应该是非法的?如果我不得不向我的代码添加特殊情况以避免零大小的数组,而不是让'array'以明显的方式处理这种情况,我会感到非常恼火。 – 2015-03-08 16:59:30
@MikeSeymour'int x [0];'*是*非法。我想问题是为什么差异。 – Angew 2015-03-08 17:03:09