std::array<T, 0>
的std :: array中有模板的部分专业化。template <typename T>
struct array<T, 0> {
//...
typedef typename conditional<is_const<_Tp>::value, const char,
char>::type _CharType;
struct _ArrayInStructT { _Tp __data_[1]; };
alignas(_ArrayInStructT) _CharType __elems_[sizeof(_ArrayInStructT)];
//...
}
那么实现std::array<T, 0>
的目的是什么?非常感谢!
std::array<Ty, N>
而不是在N
为0时编写特殊情况要容易得多。这种一致性经常出现:new int[0]
,operator new(0)
,[ std::malloc(0)
为0时为for (int i = 0; i < N; ++i)
。