std::remove_extent
De cppreference.com
<metanoindex/>
<tbody> </tbody>| Definido no cabeçalho <type_traits>
|
||
template< class T > struct remove_extent; |
(desde C++11) | |
Se
T é uma matriz de algum tipo X, fornece o membro typedef type igual X, caso contrário, é type T. Note que se T é uma matriz multidimensional, apenas a dimensão da primeira é removido.Original:
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.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Tipos de membro
Nome
Original: Name The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
Definition |
type
|
o tipo do elemento de
T Original: the type of the element of T The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
Possível implementação
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;};
|
Exemplo
#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]);
}
Saída:
4 5 6
