std::experi...not_equal_to(3)

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

πŸ’– std::experimental::ranges::not_equal_to πŸ’–

okay so bestie, this page is from the C++ Standard Libary manual β€” yes, β€œLibary,” that’s the header’s spelling, not me β€” and the page name is std::experi...not_equal_to(3). It’s giving functional-object-for-comparisons realness, and we’re gonna get into every single detail. no cap. ✨

πŸŽ€ NAME πŸŽ€

std::experimental::ranges::not_equal_to - std::experimental::ranges::not_equal_to

πŸ¦‹ Synopsis πŸ¦‹

Defined in header <experimental/ranges/functional>

template< class T = void >
    requires EqualityComparable<T> ||
             Same<T, void> ||
             /* == on two const T lvalues invokes a built-in operator
                comparing pointers */
struct not_equal_to;

template<>
struct not_equal_to<void>;

this page marks stuff with (ranges TS) twice β€” once for the primary template and once for the not_equal_to<void> specialization. keep that in mind, bestie. 🫢

Function object for performing comparisons. The primary template invokes operator == on const lvalues of type T and negates the result. The specialization not_equal_to<void> deduces the parameter types of the function call operator from the arguments (but not the return type).

All specializations of not_equal_to are Semiregular.

πŸŽ€ Member types πŸŽ€

  • Member type: is_transparent β€” member only of not_equal_to<void> specialization.
  • Definition: /* unspecified */

πŸ’… Member functions πŸ’…

  • operator() β€” checks if the arguments are not equal (public member function).

πŸ’– std::experimental::ranges::not_equal_to::operator() πŸ’–

✨ (1) ✨

constexpr bool operator()(const T& x, const T& y) const;
(1) (member only of primary template)
  1. Compares x and y. Equivalent to return !ranges::equal_to<>{}(x, y);.

✨ (2) ✨

template< class T, class U >
    requires EqualityComparableWith<T, U> ||
             /* std::declval<T>() == std::declval<U>() resolves to
                a built-in operator comparing pointers */
constexpr bool operator()(T&& t, U&& u) const;
(2) (member only of not_equal_to<void> specialization)
  1. Compares t and u. Equivalent to return !ranges::equal_to<>{}(std::forward<T>(t), std::forward<U>(u));.

🌸 Notes 🌸

Unlike std::not_equal_to, ranges::not_equal_to requires both == and != to be valid (via the EqualityComparable and EqualityComparableWith constraints), and is entirely defined in terms of ranges::equal_to. However, the implementation is free to use operator!= directly, because those concepts require the results of == and != to be consistent.

πŸ“ Example πŸ“

This section is incomplete.

Reason: no example 😭

not me with no example… it’s giving β€œtodo” energy, but that’s literally what the page says. πŸ’€

🌈 See also 🌈

  • not_equal_to β€” function object implementing x != y (class template)

⭐ Category ⭐

  • * Todo no example

mwah πŸ’‹ source/version: http://cppreference.com Β· date: 2024.06.10 Β· page: std::experi...not_equal_to(3). periodt. πŸ‘‘

πŸ“¦ where this page comes from