std::remove_extent
来自cppreference.com
                    
                                        
                    
                    
                                                            
                    |   定义于头文件  <type_traits>
  | 
||
|   template< class T > struct remove_extent;  | 
(C++11 起) | |
若 T 是某类型 X 的数组,则提供等于 X 的成员 typedef type ,否则 type 为 T 。注意若 T 是多维数组,则只移除第一维。
添加 remove_extent 的特化的程序行为未定义。
成员类型
| 类型 | 定义 | 
  type
 | 
 T 的元素类型
 | 
辅助类型
|   template< class T > using remove_extent_t = typename remove_extent<T>::type;  | 
(C++14 起) | |
可能的实现
template<class T> struct remove_extent { typedef T type; }; template<class T> struct remove_extent<T[]> { typedef T type; }; template<class T, std::size_t N> struct remove_extent<T[N]> { typedef T type; };  | 
示例
运行此代码
#include <iostream> #include <iterator> #include <algorithm> #include <type_traits> template<class A> typename std::enable_if< std::rank<A>::value == 1 >::type print_1d(const A& a) { copy(a, a+std::extent<A>::value, std::ostream_iterator<typename std::remove_extent<A>::type>(std::cout, " ")); std::cout << '\n'; } int main() { int a[][3] = {{1,2,3},{4,5,6}}; // print_1d(a); // 编译时错误 print_1d(a[1]); }
输出:
4 5 6
参阅
|    (C++11)  | 
   检查类型是否是数组类型   (类模板)  | 
|    (C++11)  | 
   获取数组类型的维数   (类模板)  | 
|    (C++11)  | 
   获取数组类型在指定维度的大小   (类模板)  | 
|    (C++11)  | 
   移除给定数组类型的所有维度   (类模板)  |