-1- In this subclause, BUILTIN-PTR-CMP(T,
op, U)
for types T
and U
and where op is an equality (7.6.10 [expr.eq]) or relational operator (7.6.9 [expr.rel]) is a boolean constant expression. BUILTIN-PTR-CMP(T,
op, U)
is true if and only if op in the expression declval<T>()
op declval<U>()
resolves to a built-in operator comparing pointers.
struct ranges::equal_to { template<class T, class U> requires equality_comparable_with<T, U> || BUILTIN-PTR-CMP(T, ==, U) constexpr bool operator()(T&& t, U&& u) const; using is_transparent = unspecified; };
template<class T, class U> requires equality_comparable_with<T, U> || BUILTIN-PTR-CMP(T, ==, U) constexpr bool operator()(T&& t, U&& u) const;
-?- Constraints:
-2- Preconditions: If the expressionT
andU
satisfyequality_comparable_with
.std::forward<T>(t) == std::forward<U>(u)
results in a call to a built-in operator==
comparing pointers of typeP
, the conversion sequences from bothT
andU
toP
are equality-preserving (18.2 [concepts.equality]) ; otherwise,T
andU
modelequality_comparable_with
. -3- Effects:
(3.1) — If the expression
std::forward<T>(t) == std::forward<U>(u)
results in a call to a built-in operator==
comparing pointers of typeP
, returnsfalse
if either (the converted value of)t
precedesu
oru
precedest
in the implementation-defined strict total order over pointers (3.28 [defns.order.ptr]) and otherwisetrue
.(3.2) — Otherwise, equivalent to:
return std::forward<T>(t) == std::forward<U>(u);
struct ranges::not_equal_to { template<class T, class U> requires equality_comparable_with<T, U> || BUILTIN-PTR-CMP(T, ==, U) constexpr bool operator()(T&& t, U&& u) const; using is_transparent = unspecified; };
template<class T, class U> constexpr bool operator()(T&& t, U&& u) const;
-?- Constraints:
-4-T
andU
satisfyequality_comparable_with
.operator()
has effects e Effects: Equivalent to:return !ranges::equal_to{}(std::forward<T>(t), std::forward<U>(u));
struct ranges::greater { template<class T, class U> requires totally_ordered_with<T, U> || BUILTIN-PTR-CMP(T, <, U) constexpr bool operator()(T&& t, U&& u) const; using is_transparent = unspecified; };
template<class T, class U> constexpr bool operator()(T&& t, U&& u) const;
-?- Constraints:
-5-T
andU
satisfytotally_ordered_with
.operator()
has effects e Effects: Equivalent to:return ranges::less{}(std::forward<U>(u), std::forward<T>(t));
struct ranges::less { template<class T, class U> requires totally_ordered_with<T, U> || BUILTIN-PTR-CMP(T, <, U) constexpr bool operator()(T&& t, U&& u) const; using is_transparent = unspecified; };
template<class T, class U> requires totally_ordered_with<T, U> || BUILTIN-PTR-CMP(T, <, U) constexpr bool operator()(T&& t, U&& u) const;
-?- Constraints:
-6- Preconditions: If the expressionT
andU
satisfytotally_ordered_with
.std::forward<T>(t) < std::forward<U>(u)
results in a call to a built-in operator<
comparing pointers of typeP
, the conversion sequences from bothT
andU
toP
are equality-preserving (18.2 [concepts.equality]) ; otherwise,T
andU
modeltotally_ordered_with
. For any expressionsET
andEU
such thatdecltype((ET))
isT
anddecltype((EU))
isU
, exactly one ofranges::less{}(ET, EU)
,ranges::less{}(EU, ET)
, orranges::equal_to{}(ET, EU)
istrue
. -7- Effects:
(7.1) — If the expression
std::forward<T>(t) < std::forward<U>(u)
results in a call to a built-in operator<
comparing pointers of typeP
, returnstrue
if (the converted value of)t
precedesu
in the implementation-defined strict total order over pointers (3.28 [defns.order.ptr]) and otherwisefalse
.(7.2) — Otherwise, equivalent to:
return std::forward<T>(t) < std::forward<U>(u);
struct ranges::greater_equal { template<class T, class U> requires totally_ordered_with<T, U> || BUILTIN-PTR-CMP(T, <, U) constexpr bool operator()(T&& t, U&& u) const; using is_transparent = unspecified; };
template<class T, class U> constexpr bool operator()(T&& t, U&& u) const;
-?- Constraints:
-8-T
andU
satisfytotally_ordered_with
.operator()
has effects e Effects: Equivalent to:return !ranges::less{}(std::forward<T>(t), std::forward<U>(u));
struct ranges::less_equal { template<class T, class U> requires totally_ordered_with<T, U> || BUILTIN-PTR-CMP(T, <, U) constexpr bool operator()(T&& t, U&& u) const; using is_transparent = unspecified; };
template<class T, class U> constexpr bool operator()(T&& t, U&& u) const;
-?- Constraints:
-9-T
andU
satisfytotally_ordered_with
.operator()
has effects e Effects: Equivalent to:return !ranges::less{}(std::forward<U>(u), std::forward<T>(t));
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4