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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::ranges::equal_to - std::ranges::equal_to

Synopsis
	  Defined in header <functional>
	  struct equal_to;		  (since C++20)

	  Function  object  for	performing comparisons.	The parameter types of
       the function call
	  operator (but	not the	return type) are deduced from the arguments.

	 Implementation-defined	strict total order over	pointers

	  The function call operator yields the	implementation-defined	strict
       total order over
	  pointers if the = operator between arguments invokes a built-in com-
       parison operator
	  for a	pointer, even if the built-in =	operator does not.

	  The implementation-defined strict total order	is consistent with the
       partial order
	  imposed  by  built-in	 comparison operators (<=>, <, >, <=, and >=),
       and consistent
	  among	following standard function objects:

	    *	  std::less,	  std::greater,	     std::less_equal,	   and
       std::greater_equal, when	the
	      template argument	is a pointer type or void

	    *	      std::ranges::equal_to,	    std::ranges::not_equal_to,
       std::ranges::less,
	      std::ranges::greater,		      std::ranges::less_equal,
       std::ranges::greater_equal, and
	      std::compare_three_way

Member types
	  Member type	 Definition
	  is_transparent /* unspecified	*/

Member functions
	  operator() checks if the arguments are equal
		     (public member function)

       std::ranges::equal_to::operator()

	  template< class T, class U >

	  requires  std::equality_comparable_with<T,  U> // with different se-
       mantic
	  requirements

	  constexpr bool operator()(T&&	t, U&& u) const;

	  Compares  t  and  u,	equivalent  to	return	std::forward<T>(t)  ==
       std::forward<U>(u);,
	  except  when that expression resolves	to a call to a built-in	opera-
       tor== comparing
	  pointers.

	  When a call would not	invoke a built-in operator comparing pointers,
       the behavior is
	  undefined if std::equality_comparable_with<T,	U> is not modeled.

	  When a call would invoke a built-in operator comparing  pointers  of
       type P, the
	  result is instead determined as follows:

	    *  Returns	false  if one of the (possibly converted) value	of the
       first argument and
	      the (possibly converted) value of	the second  argument  precedes
       the other in the
	      implementation-defined  strict  total  ordering over all pointer
       values of type P.
	      This strict total	ordering is consistent with the	partial	 order
       imposed by the
	      built-in operators <, >, <=, and >=.
	    * Otherwise	(neither precedes the other), returns true.

	  The  behavior	is undefined unless the	conversion sequences from both
       T and U to P are
	  equality-preserving (see below).

	 Equality preservation

	  An expression	is equality preserving if it results in	equal  outputs
       given equal
	  inputs.

	    * The inputs to an expression consist of its operands.
	    *  The  outputs  of	 an  expression	 consist of its	result and all
       operands	modified by
	      the expression (if any).

	  In specification of standard concepts, operands are defined  as  the
       largest
	  subexpressions that include only:

	    * an id-expression,	and
	    * invocations of std::move,	std::forward, and std::declval.

	  The  cv-qualification	 and  value category of	each operand is	deter-
       mined by	assuming
	  that each template type parameter denotes a cv-unqualified  complete
       non-array object
	  type.

	  Every	 expression  required to be equality preserving	is further re-
       quired to be
	  stable: two evaluations of such an expression	with  the  same	 input
       objects must have
	  equal	 outputs absent	any explicit intervening modification of those
       input objects.

Notes
	  Unlike std::equal_to,	std::ranges::equal_to requires both == and  !=
       to be valid (via
	  the equality_comparable_with constraint).

Example
	   This	section	is incomplete
	   Reason: no example

	 Defect	reports

	  The following	behavior-changing defect reports were applied retroac-
       tively to
	  previously published C++ standards.

	     DR	    Applied to	       Behavior	as published		  Cor-
       rect behavior
	  LWG 3530 C++20      syntactic	checks were relaxed while    only  se-
       mantic requirements
			      comparing	pointers		    relaxed

See also
	  equal_to function object implementing	x == y
		   (class template)

http://cppreference.com		  2022.07.31	      std::ranges::equal_to(3)

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

home | help