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

FreeBSD Manual Pages

  
 
  

home | help
std::compar...der_fallback(3) C++ Standard Libarystd::compar...der_fallback(3)

NAME
       std::compare_partial_order_fallback  - std::compare_partial_order_fall-
       back

Synopsis
	  Defined in header <compare>
	  inline namespace /* unspecified */ {

	  inline	 constexpr	   /*	       unspecified	    */
       (since C++20)
	  compare_partial_order_fallback = /* unspecified */;

	  }
	  Call signature
	  template< class T, class U >

	  requires /* see below	*/
	  constexpr std::partial_ordering

	  compare_partial_order_fallback(T&& t,	U&& u) noexcept(/* see below
	  */);

	  Performs  three-way  comparison  on t	and u and produces a result of
       type
	  std::partial_ordering, even if the operator <=> is unavailable.

	  Let t	and u be expressions and T and U denote	decltype((t)) and  de-
       cltype((u))
	  respectively,	 std::compare_partial_order_fallback(t,	 u) is expres-
       sion-equivalent to:

	    * If std::is_same_v<std::decay_t<T>, std::decay_t<U>> is true:

		 * std::partial_order(t, u), if	it is  a  well-formed  expres-
       sion;
		 * otherwise,

	t == u ? std::partial_ordering::equivalent :
	t < u  ? std::partial_ordering::less :
	u < t  ? std::partial_ordering::greater	:
		 std::partial_ordering::unordered

			       if t == u, t < u, and u < t are all well-formed
       and convertible
			       to bool,	except that t and u are	evaluated only
       once.

	    * In all other cases, std::compare_partial_order_fallback(t, u) is
       ill-formed,
	      which  can result	in substitution	failure	when it	appears	in the
       immediate
	      context of a template instantiation.

	 Expression-equivalent

	  Expression e is expression-equivalent	to expression f, if

	    * e	and f have the same effects, and
	    * either both are constant subexpressions or  else	neither	 is  a
       constant
	      subexpression, and
	    *  either  both are	potentially-throwing or	else neither is	poten-
       tially-throwing
	      (i.e. noexcept(e)	== noexcept(f)).

	 Customization point objects

	  The name std::compare_partial_order_fallback denotes a customization
       point object,
	  which	is a const function object  of	a  literal  semiregular	 class
       type. For exposition
	  purposes, the	cv-unqualified version of its type is denoted as
	  __compare_partial_order_fallback_fn.

	  All  instances of __compare_partial_order_fallback_fn	are equal. The
       effects of
	  invoking different instances of  type	 __compare_partial_order_fall-
       back_fn on the same
	  arguments  are  equivalent, regardless of whether the	expression de-
       noting the instance
	  is an	lvalue or rvalue, and is const-qualified or  not  (however,  a
       volatile-qualified
	  instance  is	not required to	be invocable). Thus, std::compare_par-
       tial_order_fallback
	  can be copied	freely and its copies can be used interchangeably.

	  Given	a set of types Args...,	if  std::declval<Args>()...  meet  the
       requirements for
	  arguments to std::compare_partial_order_fallback above,
	  __compare_partial_order_fallback_fn models

	    * std::invocable<__compare_partial_order_fallback_fn, Args...>,
	    *	  std::invocable<const	  __compare_partial_order_fallback_fn,
       Args...>,
	    *  std::invocable<__compare_partial_order_fallback_fn&,  Args...>,
       and
	    *	 std::invocable<const	 __compare_partial_order_fallback_fn&,
       Args...>.

	  Otherwise,  no  function  call  operator  of	 __compare_partial_or-
       der_fallback_fn
	  participates in overload resolution.

Example
	   This	section	is incomplete
	   Reason: no example

See also
	  partial_order	 performs  3-way  comparison  and produces a result of
       type
	  (C++20)	std::partial_ordering
			(customization point object)

http://cppreference.com		  2022.07.31	 std::compar...der_fallback(3)

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

home | help