Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::remove_all_extents(3)    C++ Standard Libary   std::remove_all_extents(3)

NAME
       std::remove_all_extents - std::remove_all_extents

Synopsis
	  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  re-
       move_all_extents	is
	  undefined.

Member types
	  Name Definition
	  type the type	of the element of T

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

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

Example
       // 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);
	}

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

See also
	  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)

http://cppreference.com		  2022.07.31	    std::remove_all_extents(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::remove_all_extents&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help