Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::is_pointer

      From cppreference.com
      <cpp‎ |types
       
       
      Metaprogramming library
      Type traits
      Type categories
      (C++11)
      (C++11)(DR*)
      (C++11)
      is_pointer
      (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
      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 is_pointer;
      (since C++11)

      std::is_pointer is aUnaryTypeTrait.

      Checks whetherT is apointer to object or function (including pointer tovoid, but excluding pointer to member) or a cv-qualified version thereof. Provides the member constantvalue which is equal totrue, ifT is an object/function pointer type. Otherwise,value is equal tofalse.

      If the program adds specializations forstd::is_pointer orstd::is_pointer_v, the behavior is undefined.

      Contents

      [edit]Template parameters

      T - a type to check

      [edit]Helper variable template

      template<class T>
      constexprbool is_pointer_v= is_pointer<T>::value;
      (since C++17)
      [edit]

      Inherited fromstd::integral_constant

      Member constants

      value
      [static]
      true ifT is a pointer type,false otherwise
      (public static member constant)

      Member functions

      operator bool
      converts the object tobool, returnsvalue
      (public member function)
      operator()
      (C++14)
      returnsvalue
      (public member function)

      Member types

      Type Definition
      value_typebool
      typestd::integral_constant<bool, value>

      [edit]Possible implementation

      template<class T>struct is_pointer:std::false_type{}; template<class T>struct is_pointer<T*>:std::true_type{}; template<class T>struct is_pointer<T*const>:std::true_type{}; template<class T>struct is_pointer<T*volatile>:std::true_type{}; template<class T>struct is_pointer<T*constvolatile>:std::true_type{};

      [edit]Example

      Run this code
      #include <type_traits> int main(){struct A{int m;void f(){}}; int A::*mem_data_ptr=&A::m;// a pointer to member datavoid(A::*mem_fun_ptr)()=&A::f;// a pointer to member function     static_assert(! std::is_pointer<A>::value&&! std::is_pointer_v<A>// same thing as above, but in C++17!&&! std::is_pointer<A>()// same as above, using inherited operator bool&&! std::is_pointer<A>{}// ditto&&! std::is_pointer<A>()()// same as above, using inherited operator()&&! std::is_pointer<A>{}()// ditto&&   std::is_pointer_v<A*>&&   std::is_pointer_v<Aconst*volatile>&&! std::is_pointer_v<A&>&&! std::is_pointer_v<decltype(mem_data_ptr)>&&! std::is_pointer_v<decltype(mem_fun_ptr)>&&   std::is_pointer_v<void*>&&! std::is_pointer_v<int>&&   std::is_pointer_v<int*>&&   std::is_pointer_v<int**>&&! std::is_pointer_v<int[10]>&&! std::is_pointer_v<std::nullptr_t>&&   std::is_pointer_v<void(*)()>);}

      [edit]See also

      checks if a type is a pointer to a non-static member function or object
      (class template)[edit]
      checks if a type is a non-static member object pointer
      (class template)[edit]
      checks if a type is a non-static member function pointer
      (class template)[edit]
      (C++11)
      checks if a type is an array type
      (class template)[edit]
      (C++11)
      checks if a type is a scalar type
      (class template)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/types/is_pointer&oldid=159032"

      [8]ページ先頭

      ©2009-2025 Movatter.jp