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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::remove_reference - std::remove_reference

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

	  If  the type T is a reference	type, provides the member typedef type
       which is	the
	  type referred	to by T. Otherwise type	is T.

	  The behavior of a program that adds specializations for  remove_ref-
       erence is
	  undefined.

Member types
	  Name Definition
	  type the type	referred by T or T if it is not	a reference

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

Possible implementation
	  template< class T > struct remove_reference	   { typedef  T	 type;
       };
	  template<  class  T >	struct remove_reference<T&>  { typedef T type;
       };
	  template< class T > struct remove_reference<T&&> { typedef  T	 type;
       };

Example
       // Run this code

	#include <iostream>
	#include <type_traits>

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

	    std::cout << "std::remove_reference<int>::type is int? "
		      <<	  std::is_same<int,	    std::remove_refer-
       ence<int>::type>::value << '\n';
	    std::cout << "std::remove_reference<int&>::type is int? "
		      <<	 std::is_same<int,	    std::remove_refer-
       ence<int&>::type>::value	<< '\n';
	    std::cout << "std::remove_reference<int&&>::type is	int? "
		      <<	  std::is_same<int,	    std::remove_refer-
       ence<int&&>::type>::value << '\n';
	    std::cout <<  "std::remove_reference<const	int&>::type  is	 const
       int? "
		      << std::is_same<const int,
				      std::remove_reference<const
       int&>::type>::value << '\n';
	}

Output:
	std::remove_reference<int>::type is int? true
	std::remove_reference<int&>::type is int? true
	std::remove_reference<int&&>::type is int? true
	std::remove_reference<const int&>::type	is const int? true

See also
	  is_reference		checks	if a type is either a lvalue reference
       or rvalue
	  (C++11)	       reference
			       (class template)
	  add_lvalue_reference
	  add_rvalue_reference adds a lvalue or	rvalue reference to the	 given
       type
	  (C++11)	       (class template)
	  (C++11)
	  remove_cvref		combines std::remove_cv	and std::remove_refer-
       ence
	  (C++20)	       (class template)

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

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

home | help