std::remove_extent_C++中文网
| template< class T > |
(C++11 起) | |
若 T 是某类型 X 的数组,则提供等于 X 的成员 typedef type ,否则 type 为 T 。注意若 T 是多维数组,则只移除第一维。
添加 remove_extent 的特化的程序行为未定义。
成员类型
辅助类型
| template< class T > |
(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]); }
输出: