std::remove_extent - cppreference.com

##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# std::remove_extent

From cppreference.com
< cpp‎ | types

Defined in header `<type_traits>` |  |
template< class T > struct remove_extent; |  | (since C++11)

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.

### [edit] Member types

Name | Definition
`type` | the type of the element of `T`

### [edit] Helper types

template< class T > using remove_extent_t = typename remove_extent<T>::type; |  | (since C++14)

### [edit] Possible implementation

    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;};

### [edit] Example

Run this code

    #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]);
    }

Output:

    4 5 6

### [edit] See also

is_array (C++11) | checks if a type is an array type (class template) [edit]
rank (C++11) | obtains the number of dimensions of an array type (class template) [edit]
extent (C++11) | obtains the size of an array type along a specified dimension (class template) [edit]
remove_all_extents (C++11) | removes all extents from the given array type (class template) [edit]

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/types/remove_extent&oldid=63065"