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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::remove_cvref - std::remove_cvref

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

	  If  the type T is a reference	type, provides the member typedef type
       which is	the
	  type referred	to by T	with its topmost cv-qualifiers removed.	Other-
       wise type is T
	  with its topmost cv-qualifiers removed.

	  If the program adds specializations for std::remove_cvref,  the  be-
       havior is
	  undefined.

Member types
	  Name Definition
	  type	the  type  referred by T or T itself if	it is not a reference,
       with top-level
	       cv-qualifiers removed

Helper types
	  template< class T >				 (since	C++20)
	  using	remove_cvref_t = remove_cvref<T>::type;

Possible implementation
	  template<class T>
	  struct remove_cvref
	  {
	      using type = std::remove_cv_t<std::remove_reference_t<T>>;
	  };

Notes
	    Feature-test macro	  Value	   Std	      Feature
	  __cpp_lib_remove_cvref 201711L (C++20) std::remove_cvref

Example
       // Run this code

	#include <type_traits>

	int main()
	{
	    static_assert(std::is_same_v<std::remove_cvref_t<int>, int>);
	    static_assert(std::is_same_v<std::remove_cvref_t<int&>, int>);
	    static_assert(std::is_same_v<std::remove_cvref_t<int&&>, int>);
	    static_assert(std::is_same_v<std::remove_cvref_t<const	int&>,
       int>);
	    static_assert(std::is_same_v<std::remove_cvref_t<const    int[2]>,
       int[2]>);
	    static_assert(std::is_same_v<std::remove_cvref_t<const int(&)[2]>,
       int[2]>);
	    static_assert(std::is_same_v<std::remove_cvref_t<int(int)>,
       int(int)>);
	}

See also
	  remove_cv
	  remove_const
	  remove_volatile  removes const and/or	volatile specifiers  from  the
       given type
	  (C++11)	   (class template)
	  (C++11)
	  (C++11)
	  remove_reference removes a reference from the	given type
	  (C++11)	   (class template)
	  decay		    applies  type  transformations  as	when passing a
       function	argument by
	  (C++11)	   value
			   (class template)

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

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

home | help