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.

	  The behavior of a program that adds specializations for remove_cvref
       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 = typename remove_cvref<T>::type;

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

Notes
	  Feature-test macro: __cpp_lib_remove_cvref

Example
       // Run this code

	#include <iostream>
	#include <type_traits>

	int main()
	{
	    std::cout << std::boolalpha
		      << std::is_same_v<std::remove_cvref_t<int>, int> << '\n'
		      <<  std::is_same_v<std::remove_cvref_t<int&>,  int>   <<
       '\n'
		      <<  std::is_same_v<std::remove_cvref_t<int&&>,  int>  <<
       '\n'
		      << std::is_same_v<std::remove_cvref_t<const int&>,  int>
       << '\n'
		      <<   std::is_same_v<std::remove_cvref_t<const   int[2]>,
       int[2]> << '\n'
		      << std::is_same_v<std::remove_cvref_t<const  int(&)[2]>,
       int[2]> << '\n'
		      <<	 std::is_same_v<std::remove_cvref_t<int(int)>,
       int(int)> << '\n';
	}

Output:
	true
	true
	true
	true
	true
	true
	true

See also
	  remove_cv
	  remove_const
	  remove_volatile  removes const or/and	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		  2022.07.31		  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.0>

home | help