GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
std::remove_all_extents(3) C++ Standard Libary std::remove_all_extents(3)

std::remove_all_extents - std::remove_all_extents


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


If T is a multidimensional array of some type X, provides the member typedef type
equal to X, otherwise type is T.


The behavior of a program that adds specializations for remove_all_extents is
undefined.


Name Definition
type the type of the element of T


template< class T > (since C++14)
using remove_all_extents_t = typename remove_all_extents<T>::type;


template<class T>
struct remove_all_extents { typedef T type; };


template<class T>
struct remove_all_extents<T[]> {
typedef typename remove_all_extents<T>::type type;
};


template<class T, std::size_t N>
struct remove_all_extents<T[N]> {
typedef typename remove_all_extents<T>::type type;
};

// Run this code


#include <iostream>
#include <type_traits>
#include <typeinfo>


template<class A>
void info(const A&)
{
typedef typename std::remove_all_extents<A>::type Type;
std::cout << "underlying type: " << typeid(Type).name() << '\n';
}


int main()
{
float a0;
float a1[1][2][3];
float a2[1][1][1][1][2];
float* a3;
int a4[3][2];
double a5[2][3];
struct X { int m; } x0[3][3];


info(a0);
info(a1);
info(a2);
info(a3);
info(a4);
info(a5);
info(x0);
}


underlying type: float
underlying type: float
underlying type: float
underlying type: float*
underlying type: int
underlying type: double
underlying type: main::X


is_array checks if a type is an array type
(C++11) (class template)
rank obtains the number of dimensions of an array type
(C++11) (class template)
extent obtains the size of an array type along a specified dimension
(C++11) (class template)
remove_extent removes one extent from the given array type
(C++11) (class template)

2022.07.31 http://cppreference.com

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.