std::remove_extent - cppreference.com
提供: cppreference.com
<tbody> </tbody>
|
|
(C++11以上) | |
T が何らかの型 X の配列であれば、 X に等しいメンバ型 type が提供されます。 そうでなければ type は T です。 T が多次元配列の場合は、最初の次元のみが除去されることに注意してください。
メンバ型
ヘルパー型
<tbody> </tbody>
|
|
(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); // compile-time error print_1d(a[1]); }
出力: