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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::same_as - std::same_as

Synopsis
	  Defined in header <concepts>
	  template < class T, class U >	      (since C++20)
	  concept same_as = /* see below */;

	  The concept same_as<T, U> is satisfied if and	only if	T and U	denote
       the same	type.

	  std::same_as<T, U> subsumes std::same_as<U, T> and vice versa.

Possible implementation
	  namespace detail {
	      template<	class T, class U >
	      concept SameHelper = std::is_same_v<T, U>;
	  }

	  template< class T, class U >
	  concept  same_as = detail::SameHelper<T, U> && detail::SameHelper<U,
       T>;

Example
       // Run this code

	#include <concepts>
	#include <iostream>

	template<typename T, typename ... U>
	concept	IsAnyOf	= (std::same_as<T, U> || ...);

	template<typename T>
	concept	IsPrintable = std::integral<T> || std::floating_point<T> ||
	    IsAnyOf<std::remove_cvref_t<std::remove_pointer_t<std::de-
       cay_t<T>>>, char, wchar_t>;

	void println(IsPrintable auto const ...	arguments)
	{
	    (std::wcout	<< ... << arguments) <<	'\n';
	}

	int main() { println("Example: ", 3.14,	" : ", 42, " : [", 'a',	 L'-',
       L"Z]"); }

Output:
	Example: 3.14 :	42 : [a-Z]

See also
	  is_same checks if two	types are the same
	  (C++11) (class template)

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

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

home | help