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

FreeBSD Manual Pages

  
 
  

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.

	  The  behavior	 of  a	program	 that  adds  specializations  for  re-
       move_pointer 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			{type-
       def T type;};
	  template<  class T > struct remove_pointer<T*>		{type-
       def T type;};
	  template< class T > struct remove_pointer<T* const>		{type-
       def T type;};
	  template<  class T > struct remove_pointer<T*	volatile>	{type-
       def T type;};
	  template< class T > struct remove_pointer<T* const volatile>	{type-
       def T type;};

Example
       // Run this code

	#include <iostream>
	#include <type_traits>

	template<class T1, class T2>
	void print_is_same()
	{
	    std::cout << std::is_same<T1, T2>()	<< '\n';
	}

	void print_separator()
	{
	    std::cout << "-----\n";
	}

	int main()
	{
	    std::cout << std::boolalpha;

	    print_is_same<int, int>();	 // true
	    print_is_same<int, int*>();	 // false
	    print_is_same<int, int**>(); // false

	    print_separator();

	    print_is_same<int, std::remove_pointer<int>::type>();   // true
	    print_is_same<int, std::remove_pointer<int*>::type>();  // true
	    print_is_same<int, std::remove_pointer<int**>::type>(); // false

	    print_separator();

	    print_is_same<int,	  std::remove_pointer<int*    const>::type>();
       // true
	    print_is_same<int,	std::remove_pointer<int*   volatile>::type>();
       // true
	    print_is_same<int,		std::remove_pointer<int*	 const
       volatile>::type>(); // true
	}

Output:
	true
	false
	false
	-----
	true
	true
	false
	-----
	true
	true
	true

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		  2022.07.31		std::remove_pointer(3)

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

home | help