Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::remove_all_extents

      From cppreference.com
      <cpp‎ |types
       
       
      Metaprogramming library
      Type traits
      Type categories
      (C++11)
      (C++11)(DR*)
      (C++11)
      (C++11)
      (C++11)
      (C++11)
      (C++11)
      (C++11) 
      Type properties
      (C++11)
      (C++11)
      (C++14)
      (C++11)(deprecated in C++26)
      (C++11)(until C++20*)
      (C++11)(deprecated in C++20)
      (C++11)
      Type trait constants
      Metafunctions
      (C++17)
      Supported operations
      Relationships and property queries
      Type modifications
      remove_all_extents
      (C++11)

      Type transformations
      (C++11)(deprecated in C++23)
      (C++11)(deprecated in C++23)
      (C++11)
      (C++11)(until C++20*)(C++17)

      Compile-time rational arithmetic
      Compile-time integer sequences
       
      Defined in header<type_traits>
      template<class T>
      struct remove_all_extents;
      (since C++11)

      IfT is a multidimensional array of some typeX, provides the member typedeftype equal toX, otherwisetype isT.

      If the program adds specializations forstd::remove_all_extents, the behavior is undefined.

      Contents

      [edit]Member types

      Name Definition
      type the type of the element ofT

      [edit]Helper types

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

      [edit]Possible implementation

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

      [edit]Example

      Run this code
      #include <iostream>#include <type_traits>#include <typeinfo> template<class A>void info(const A&){typedeftypename 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: floatunderlying type: floatunderlying type: floatunderlying type: float*underlying type: intunderlying type: doubleunderlying type: main::X

      [edit]See also

      (C++11)
      checks if a type is an array type
      (class template)[edit]
      (C++11)
      obtains the number of dimensions of an array type
      (class template)[edit]
      (C++11)
      obtains the size of an array type along a specified dimension
      (class template)[edit]
      removes one extent from the given array type
      (class template)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/types/remove_all_extents&oldid=139244"

      [8]ページ先頭

      ©2009-2025 Movatter.jp