Проверка размера массива tr1 во время компиляции - PullRequest
3 голосов
/ 07 февраля 2011

Я только что узнал, что boost :: array :: static_size не является частью tr1 :: array, или, по крайней мере, его нет в моей реализации (GCC 4.2.1), и я не могу найти его ни в одной документации tr1 ,

Есть ли другой способ выполнить утверждение во время компиляции относительно количества элементов в массиве tr1?

например. Следующее работает с массивом boost, но не с массивом tr1:

template<typename T>
void CheckArray(const T& input) {
  BOOST_STATIC_ASSERT(T::static_size >= 2);
}

Я знаю, что вместо этого могу использовать массив boost, но мне любопытно.

Если нет способа сделать это, может кто-то знает, почему static_size не был включен в tr1? Это просто функция, которая была добавлена ​​для повышения после создания tr1?

1 Ответ

4 голосов
/ 07 февраля 2011

TR1 сам говорит, что std::tuple_size<array<T, N> >::value возвращает N, размер массива.

...