#include #include using namespace boost; int main() { static const size_t TopDim = 2; static const size_t LowDim = 3; typedef int ArrayTwoDim[TopDim][LowDim]; typedef int LowDimRemoved[TopDim]; typedef int TopDimRemoved[LowDim]; BOOST_STATIC_ASSERT(( is_same< decay::type, TopDimRemoved* >::value )); BOOST_STATIC_ASSERT(( is_same< remove_extent::type*, decay::type >::value )); BOOST_STATIC_ASSERT(( is_same< remove_extent::type, TopDimRemoved >::value )); return 0; }