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

NAME
     std::remove_pointer - std::remove_pointer

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

	Provides  the member typedef type which is the type pointed to by T, or,
     if T is not
	a pointer, then type is the same as T.

	If the program adds specializations for std::remove_pointer, the  behav-
     ior is
	undefined.

Member types
	Name Definition
	type the type pointed to by T or T if it's not a pointer

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

Possible implementation
	template<class T> struct remove_pointer { typedef T type; };
	template<class T> struct remove_pointer<T*> { typedef T type; };
	template<class T> struct remove_pointer<T* const> { typedef T type; };
	template<class T> struct remove_pointer<T* volatile> { typedef	T  type;
     };
	template<class	T>  struct remove_pointer<T* const volatile> { typedef T
     type; };

Example
     // Run this code

      #include <type_traits>

      static_assert
      (
	  std::is_same_v<int, int> == true &&
	  std::is_same_v<int, int*> == false &&
	  std::is_same_v<int, int**> == false &&
	  std::is_same_v<int, std::remove_pointer_t<int>> == true &&
	  std::is_same_v<int, std::remove_pointer_t<int*>> == true &&
	  std::is_same_v<int, std::remove_pointer_t<int**>> == false &&
	  std::is_same_v<int, std::remove_pointer_t<int* const>> == true &&
	  std::is_same_v<int, std::remove_pointer_t<int* volatile>> == true &&
	  std::is_same_v<int,  std::remove_pointer_t<int*  const  volatile>>  ==
     true
      );

      int main() {}

See also
	is_pointer  checks if a type is a pointer type
	(C++11)     (class template)
	add_pointer adds a pointer to the given type
	(C++11)     (class template)

http://cppreference.com 	   2024.06.10		  std::remove_pointer(3)

home | help