std::experi...es::greater(3)

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

πŸ’… std::experi...es::greater(3) πŸ’…

okay bestie, we're in the C++ Standard Libary manual and this page is about std::experi...es::greater(3) β€” it's giving experimental ranges comparison-function-object energy πŸ’– no cap.


✨ NAME ✨

std::experimental::ranges::greater β€” std::experimental::ranges::greater. yes bestie, the name is the name twice, iconic of manpages 😭

🌸 Synopsis 🌸

Defined in header <experimental/ranges/functional>

template< class T = void >

    requires StrictTotallyOrdered<T> ||
             Same<T, void> ||
(ranges TS)
             /* < on two const T lvalues invokes a built-in operator
comparing pointers */

struct greater;
template<>
(ranges TS)
struct greater<void>;

Function object for performing comparisons. The primary template invokes operator< on const lvalues of type T with the argument order inverted. The specialization greater<void> deduces the parameter types of the function call operator from the arguments (but not the return type).

All specializations of greater are Semiregular.

πŸŽ€ Member types πŸŽ€

  • Member type: is_transparent β€” Definition: /* unspecified */ (member only of the greater<void> specialization)

✨ Member functions ✨

  • operator() β€” checks if the first argument is greater than the second (public member function)

🫢 std::experimental::ranges::greater::operator()

Overload (1) β€” member only of the primary greater<T> template:

constexpr bool operator()(const T& x, const T& y) const;

Overload (2) β€” member only of the greater<void> specialization:

template< class T, class U >

    requires StrictTotallyOrderedWith<T, U> ||
             /* std::declval<T>() <
std::declval<U>() resolves to
                a built-in operator comparing
pointers */

constexpr bool operator()(T&& t, U&& u) const;
  1. Compares x and y. Equivalent to return ranges::less<>{}(y, x);.
  2. Compares t and u. Equivalent to return ranges::less<>{}(std::forward<U>(u), std::forward<T>(t));.

πŸ¦‹ Notes πŸ¦‹

Unlike std::greater, ranges::greater requires all six comparison operators <, <=, >, >=, == and != to be valid (via the StrictTotallyOrdered and StrictTotallyOrderedWith constraints) and is entirely defined in terms of ranges::less. However, the implementation is free to use operator> directly, because those concepts require the results of the comparison operators to be consistent.

πŸ“ Example πŸ“

This section is incomplete. Reason: no example.

🌈 See also 🌈

  • greater β€” function object implementing x > y (class template)

πŸ‘‘ Category: πŸ‘‘

  • Todo no example

shoutout to the source/version at http://cppreference.com, dated 2024.06.10, for this std::experi...es::greater(3) page β€” bye bestie, mwah πŸ’‹βœ¨

πŸ“¦ where this page comes from