<rank<int[1]>::value>является интегральным постоянным выражением, которое оценивает до1.
<rank<int[][2]>::value>является интегральным постоянным выражением, которое оценивает до2.
<rank<int*>::value>является интегральным постоянным выражением, которое оценивает до0.
<rank<boost::array<int,3>>::value>является интегральным постоянным выражением, которое оценивает до0:<boost::array>является типом класса ине тип массива!
<rank<T>::value_type>является типом<std::size_t>.
Статья rank раздела Chapter 1. Boost.TypeTraits Alphabetical Reference может быть полезна для разработчиков на c++ и boost.