Какова цель std :: array ? - PullRequest
       26

Какова цель std :: array ?

4 голосов
/ 12 февраля 2020

Я обнаружил, что в std :: array есть частичная специализация шаблона для std::array<T, 0>.

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>?

Спасибо большое много!

1 Ответ

5 голосов
/ 12 февраля 2020

Причина, просто, единообразие. Когда вы пишете шаблоны, гораздо легче иметь возможность всегда писать std::array<Ty, N>, чем писать особый случай, когда N равен 0. Часто возникает такая единообразие: new int[0], operator new(0), std::malloc(0), for (int i = 0; i < N; ++i), когда N равно 0.

...