大小为零的std::array<int,0>
是什么意思?
在发布此内容之前,我已经在SO中经历了类似的问题,而所有这些问题
有关简单数组类型和C语言的问题,大多数人说这是非法的。但是在C++中,array<int,0>
是允许的。
根据cppreference.com
为什么不将其定义为非法?
最佳答案
例如,与一个空的std::vector
或一个空的std::set
相同。
使它合法是可取的,因为这意味着当std::array
的大小是编译时计算的结果时,通用编程不必处理特殊情况。
由于模板专门化,可能将定义为合法。例如,Visual C++附带的实现以类似于下面的方式专门化了std::array
:
template<class T>
class array<T, 0> // specialisation
{
// ...
size_type size() const
{
return 0;
}
T elements[1]; // the raw array cannot have a size of 0
};
我想每个编译器都这样实现
std::array
。关于c++ - 大小为零的std::array,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28929165/