std::remove_extent
来自cppreference.com
该页由英文版wiki使用Google Translate机器翻译而来。
该翻译可能存在错误或用词不当。鼠标停留在文本上可以看到原版本。你可以帮助我们修正错误或改进翻译。参见说明请点击这里. |
在头文件 <type_traits> 中定义
|
||
template< class T > struct remove_extent; |
(C++11 起) | |
如果
T
是某些类型的数组X
,提供成员typedeftype
等于X
,否则type
是T
。需要注意的是,如果T是一个多维数组,只有第一个维度被删除.原文:
If
T
is an array of some type X
, provides the member typedef type
equal to X
, otherwise type
is T
. Note that if T is a multidimensional array, only the first dimension is removed.目录 |
[编辑] 会员类型
姓名
|
Definition |
type
|
T 的元素的类型 |
[编辑] 可能的实现
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); // compile-time error print_1d(a[1]); }
输出:
4 5 6
[编辑] 另请参阅
(C++11) |
检查类型是否是数组类型 (类模板) |
(C++11) |
获取数组类型的维度 (类模板) |
(C++11) |
获取指定维度的数据类型大小 (类模板) |
(C++11) |
移除数组类型所有维度 (类模板) |