remove_all_extents C++11中引入的类型模板, 把一个数组中的数组类型部分移除掉, 只保留元素类型部分。
int b[5][8]
cout<<typeid(std::remove_all_extents<decltype(b)>::type).name()<<endl;// int
//实现:
template<class _Ty>
struct remove_all_extents
{ // remove all array extents
using type = _Ty;
};
template<class _Ty, size_t _Ix>
struct remove_all_extents<_Ty[_Ix]>
{ // remove all array extents
using type = typename remove_all_extents<_Ty>::type;
};
template<class _Ty>
struct remove_all_extents<_Ty[]>
{ // remove all array extents
using type = typename remove_all_extents<_Ty>::type;
};