| //===----------------------------------------------------------------------===// |
| // |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| // See https://llvm.org/LICENSE.txt for license information. |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| // |
| //===----------------------------------------------------------------------===// |
| |
| // UNSUPPORTED: c++03, c++11, c++14, c++17 |
| // UNSUPPORTED: libcpp-no-concepts |
| |
| // template<class T, class U> |
| // concept equality_comparable_with = // see below |
| |
| #include <concepts> |
| |
| #include <array> |
| #include <deque> |
| #include <forward_list> |
| #include <list> |
| #include <map> |
| #include <memory> |
| #include <mutex> |
| #include <optional> |
| #include <set> |
| #include <unordered_map> |
| #include <unordered_set> |
| #include <vector> |
| |
| #include "../types.h" |
| |
| template <class T, class U> |
| constexpr bool check_equality_comparable_with() { |
| constexpr bool result = std::equality_comparable_with<T, U>; |
| static_assert(std::equality_comparable_with<U, T> == result); |
| static_assert(std::equality_comparable_with<T, U const> == result); |
| static_assert(std::equality_comparable_with<T const, U const> == result); |
| static_assert(std::equality_comparable_with<T, U const&> == result); |
| static_assert(std::equality_comparable_with<T const, U const&> == result); |
| static_assert(std::equality_comparable_with<T&, U const> == result); |
| static_assert(std::equality_comparable_with<T const&, U const> == result); |
| static_assert(std::equality_comparable_with<T&, U const&> == result); |
| static_assert(std::equality_comparable_with<T const&, U const&> == result); |
| static_assert(std::equality_comparable_with<T, U const&&> == result); |
| static_assert(std::equality_comparable_with<T const, U const&&> == result); |
| static_assert(std::equality_comparable_with<T&, U const&&> == result); |
| static_assert(std::equality_comparable_with<T const&, U const&&> == result); |
| static_assert(std::equality_comparable_with<T&&, U const> == result); |
| static_assert(std::equality_comparable_with<T const&&, U const> == result); |
| static_assert(std::equality_comparable_with<T&&, U const&> == result); |
| static_assert(std::equality_comparable_with<T const&&, U const&> == result); |
| static_assert(std::equality_comparable_with<T&&, U const&&> == result); |
| static_assert(std::equality_comparable_with<T const&&, U const&&> == result); |
| return result; |
| } |
| |
| namespace fundamentals { |
| static_assert(check_equality_comparable_with<int, int>()); |
| static_assert(check_equality_comparable_with<int, bool>()); |
| static_assert(check_equality_comparable_with<int, char>()); |
| static_assert(check_equality_comparable_with<int, wchar_t>()); |
| static_assert(check_equality_comparable_with<int, double>()); |
| static_assert(!check_equality_comparable_with<int, int*>()); |
| static_assert(!check_equality_comparable_with<int, int[5]>()); |
| static_assert(!check_equality_comparable_with<int, int (*)()>()); |
| static_assert(!check_equality_comparable_with<int, int (&)()>()); |
| |
| struct S {}; |
| static_assert(!check_equality_comparable_with<int, int S::*>()); |
| static_assert(!check_equality_comparable_with<int, int (S::*)()>()); |
| static_assert(!check_equality_comparable_with<int, int (S::*)() noexcept>()); |
| static_assert(!check_equality_comparable_with<int, int (S::*)() const>()); |
| static_assert( |
| !check_equality_comparable_with<int, int (S::*)() const noexcept>()); |
| static_assert(!check_equality_comparable_with<int, int (S::*)() volatile>()); |
| static_assert( |
| !check_equality_comparable_with<int, int (S::*)() volatile noexcept>()); |
| static_assert( |
| !check_equality_comparable_with<int, int (S::*)() const volatile>()); |
| static_assert(!check_equality_comparable_with< |
| int, int (S::*)() const volatile noexcept>()); |
| static_assert(!check_equality_comparable_with<int, int (S::*)() &>()); |
| static_assert(!check_equality_comparable_with<int, int (S::*)() & noexcept>()); |
| static_assert(!check_equality_comparable_with<int, int (S::*)() const&>()); |
| static_assert( |
| !check_equality_comparable_with<int, int (S::*)() const & noexcept>()); |
| static_assert(!check_equality_comparable_with<int, int (S::*)() volatile&>()); |
| static_assert( |
| !check_equality_comparable_with<int, int (S::*)() volatile & noexcept>()); |
| static_assert( |
| !check_equality_comparable_with<int, int (S::*)() const volatile&>()); |
| static_assert(!check_equality_comparable_with<int, int (S::*)() const volatile & |
| noexcept>()); |
| static_assert(!check_equality_comparable_with<int, int (S::*)() &&>()); |
| static_assert(!check_equality_comparable_with < int, |
| int (S::*)() && noexcept > ()); |
| static_assert(!check_equality_comparable_with<int, int (S::*)() const&&>()); |
| static_assert(!check_equality_comparable_with < int, |
| int (S::*)() const&& noexcept > ()); |
| static_assert(!check_equality_comparable_with<int, int (S::*)() volatile&&>()); |
| static_assert(!check_equality_comparable_with < int, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert( |
| !check_equality_comparable_with<int, int (S::*)() const volatile&&>()); |
| static_assert(!check_equality_comparable_with < int, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(check_equality_comparable_with<int*, int*>()); |
| static_assert(check_equality_comparable_with<int*, int[5]>()); |
| static_assert(!check_equality_comparable_with<int*, int (*)()>()); |
| static_assert(!check_equality_comparable_with<int*, int (&)()>()); |
| static_assert(!check_equality_comparable_with<int*, int (S::*)()>()); |
| static_assert(!check_equality_comparable_with<int*, int (S::*)() noexcept>()); |
| static_assert(!check_equality_comparable_with<int*, int (S::*)() const>()); |
| static_assert( |
| !check_equality_comparable_with<int*, int (S::*)() const noexcept>()); |
| static_assert(!check_equality_comparable_with<int*, int (S::*)() volatile>()); |
| static_assert( |
| !check_equality_comparable_with<int*, int (S::*)() volatile noexcept>()); |
| static_assert( |
| !check_equality_comparable_with<int*, int (S::*)() const volatile>()); |
| static_assert(!check_equality_comparable_with< |
| int*, int (S::*)() const volatile noexcept>()); |
| static_assert(!check_equality_comparable_with<int*, int (S::*)() &>()); |
| static_assert(!check_equality_comparable_with<int*, int (S::*)() & noexcept>()); |
| static_assert(!check_equality_comparable_with<int*, int (S::*)() const&>()); |
| static_assert( |
| !check_equality_comparable_with<int*, int (S::*)() const & noexcept>()); |
| static_assert(!check_equality_comparable_with<int*, int (S::*)() volatile&>()); |
| static_assert( |
| !check_equality_comparable_with<int*, int (S::*)() volatile & noexcept>()); |
| static_assert( |
| !check_equality_comparable_with<int*, int (S::*)() const volatile&>()); |
| static_assert(!check_equality_comparable_with< |
| int*, int (S::*)() const volatile & noexcept>()); |
| static_assert(!check_equality_comparable_with<int*, int (S::*)() &&>()); |
| static_assert(!check_equality_comparable_with < int*, |
| int (S::*)() && noexcept > ()); |
| static_assert(!check_equality_comparable_with<int*, int (S::*)() const&&>()); |
| static_assert(!check_equality_comparable_with < int*, |
| int (S::*)() const&& noexcept > ()); |
| static_assert(!check_equality_comparable_with<int*, int (S::*)() volatile&&>()); |
| static_assert(!check_equality_comparable_with < int*, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert( |
| !check_equality_comparable_with<int*, int (S::*)() const volatile&&>()); |
| static_assert(!check_equality_comparable_with < int*, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(check_equality_comparable_with<int[5], int[5]>()); |
| static_assert(!check_equality_comparable_with<int[5], int (*)()>()); |
| static_assert(!check_equality_comparable_with<int[5], int (&)()>()); |
| static_assert(!check_equality_comparable_with<int[5], int (S::*)()>()); |
| static_assert(!check_equality_comparable_with<int[5], int (S::*)() noexcept>()); |
| static_assert(!check_equality_comparable_with<int[5], int (S::*)() const>()); |
| static_assert( |
| !check_equality_comparable_with<int[5], int (S::*)() const noexcept>()); |
| static_assert(!check_equality_comparable_with<int[5], int (S::*)() volatile>()); |
| static_assert( |
| !check_equality_comparable_with<int[5], int (S::*)() volatile noexcept>()); |
| static_assert( |
| !check_equality_comparable_with<int[5], int (S::*)() const volatile>()); |
| static_assert(!check_equality_comparable_with< |
| int[5], int (S::*)() const volatile noexcept>()); |
| static_assert(!check_equality_comparable_with<int[5], int (S::*)() &>()); |
| static_assert( |
| !check_equality_comparable_with<int[5], int (S::*)() & noexcept>()); |
| static_assert(!check_equality_comparable_with<int[5], int (S::*)() const&>()); |
| static_assert( |
| !check_equality_comparable_with<int[5], int (S::*)() const & noexcept>()); |
| static_assert( |
| !check_equality_comparable_with<int[5], int (S::*)() volatile&>()); |
| static_assert(!check_equality_comparable_with<int[5], int (S::*)() volatile & |
| noexcept>()); |
| static_assert( |
| !check_equality_comparable_with<int[5], int (S::*)() const volatile&>()); |
| static_assert(!check_equality_comparable_with< |
| int[5], int (S::*)() const volatile & noexcept>()); |
| static_assert(!check_equality_comparable_with<int[5], int (S::*)() &&>()); |
| static_assert(!check_equality_comparable_with < int[5], |
| int (S::*)() && noexcept > ()); |
| static_assert(!check_equality_comparable_with<int[5], int (S::*)() const&&>()); |
| static_assert(!check_equality_comparable_with < int[5], |
| int (S::*)() const&& noexcept > ()); |
| static_assert( |
| !check_equality_comparable_with<int[5], int (S::*)() volatile&&>()); |
| static_assert(!check_equality_comparable_with < int[5], |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert( |
| !check_equality_comparable_with<int[5], int (S::*)() const volatile&&>()); |
| static_assert(!check_equality_comparable_with < int[5], |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(check_equality_comparable_with<int (*)(), int (*)()>()); |
| static_assert(check_equality_comparable_with<int (*)(), int (&)()>()); |
| static_assert(!check_equality_comparable_with<int (*)(), int (S::*)()>()); |
| static_assert( |
| !check_equality_comparable_with<int (*)(), int (S::*)() noexcept>()); |
| static_assert(!check_equality_comparable_with<int (*)(), int (S::*)() const>()); |
| static_assert( |
| !check_equality_comparable_with<int (*)(), int (S::*)() const noexcept>()); |
| static_assert( |
| !check_equality_comparable_with<int (*)(), int (S::*)() volatile>()); |
| static_assert(!check_equality_comparable_with< |
| int (*)(), int (S::*)() volatile noexcept>()); |
| static_assert( |
| !check_equality_comparable_with<int (*)(), int (S::*)() const volatile>()); |
| static_assert(!check_equality_comparable_with< |
| int (*)(), int (S::*)() const volatile noexcept>()); |
| static_assert(!check_equality_comparable_with<int (*)(), int (S::*)() &>()); |
| static_assert( |
| !check_equality_comparable_with<int (*)(), int (S::*)() & noexcept>()); |
| static_assert( |
| !check_equality_comparable_with<int (*)(), int (S::*)() const&>()); |
| static_assert(!check_equality_comparable_with<int (*)(), |
| int (S::*)() const & noexcept>()); |
| static_assert( |
| !check_equality_comparable_with<int (*)(), int (S::*)() volatile&>()); |
| static_assert(!check_equality_comparable_with<int (*)(), int (S::*)() volatile & |
| noexcept>()); |
| static_assert( |
| !check_equality_comparable_with<int (*)(), int (S::*)() const volatile&>()); |
| static_assert(!check_equality_comparable_with< |
| int (*)(), int (S::*)() const volatile & noexcept>()); |
| static_assert(!check_equality_comparable_with<int (*)(), int (S::*)() &&>()); |
| static_assert(!check_equality_comparable_with < int (*)(), |
| int (S::*)() && noexcept > ()); |
| static_assert( |
| !check_equality_comparable_with<int (*)(), int (S::*)() const&&>()); |
| static_assert(!check_equality_comparable_with < int (*)(), |
| int (S::*)() const&& noexcept > ()); |
| static_assert( |
| !check_equality_comparable_with<int (*)(), int (S::*)() volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (*)(), |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (*)(), |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (*)(), |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(check_equality_comparable_with<int (&)(), int (&)()>()); |
| static_assert(!check_equality_comparable_with<int (&)(), int (S::*)()>()); |
| static_assert( |
| !check_equality_comparable_with<int (&)(), int (S::*)() noexcept>()); |
| static_assert(!check_equality_comparable_with<int (&)(), int (S::*)() const>()); |
| static_assert( |
| !check_equality_comparable_with<int (&)(), int (S::*)() const noexcept>()); |
| static_assert( |
| !check_equality_comparable_with<int (&)(), int (S::*)() volatile>()); |
| static_assert(!check_equality_comparable_with< |
| int (&)(), int (S::*)() volatile noexcept>()); |
| static_assert( |
| !check_equality_comparable_with<int (&)(), int (S::*)() const volatile>()); |
| static_assert(!check_equality_comparable_with< |
| int (&)(), int (S::*)() const volatile noexcept>()); |
| static_assert(!check_equality_comparable_with<int (&)(), int (S::*)() &>()); |
| static_assert( |
| !check_equality_comparable_with<int (&)(), int (S::*)() & noexcept>()); |
| static_assert( |
| !check_equality_comparable_with<int (&)(), int (S::*)() const&>()); |
| static_assert(!check_equality_comparable_with<int (&)(), |
| int (S::*)() const & noexcept>()); |
| static_assert( |
| !check_equality_comparable_with<int (&)(), int (S::*)() volatile&>()); |
| static_assert(!check_equality_comparable_with<int (&)(), int (S::*)() volatile & |
| noexcept>()); |
| static_assert( |
| !check_equality_comparable_with<int (&)(), int (S::*)() const volatile&>()); |
| static_assert(!check_equality_comparable_with< |
| int (&)(), int (S::*)() const volatile & noexcept>()); |
| static_assert(!check_equality_comparable_with<int (&)(), int (S::*)() &&>()); |
| static_assert(!check_equality_comparable_with < int (&)(), |
| int (S::*)() && noexcept > ()); |
| static_assert( |
| !check_equality_comparable_with<int (&)(), int (S::*)() const&&>()); |
| static_assert(!check_equality_comparable_with < int (&)(), |
| int (S::*)() const&& noexcept > ()); |
| static_assert( |
| !check_equality_comparable_with<int (&)(), int (S::*)() volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (&)(), |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (&)(), |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (&)(), |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(check_equality_comparable_with<int (S::*)(), int (S::*)()>()); |
| static_assert( |
| check_equality_comparable_with<int (S::*)(), int (S::*)() noexcept>()); |
| static_assert( |
| !check_equality_comparable_with<int (S::*)(), int (S::*)() const>()); |
| static_assert(!check_equality_comparable_with<int (S::*)(), |
| int (S::*)() const noexcept>()); |
| static_assert( |
| !check_equality_comparable_with<int (S::*)(), int (S::*)() volatile>()); |
| static_assert(!check_equality_comparable_with< |
| int (S::*)(), int (S::*)() volatile noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)(), |
| int (S::*)() const volatile>()); |
| static_assert(!check_equality_comparable_with< |
| int (S::*)(), int (S::*)() const volatile noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)(), int (S::*)() &>()); |
| static_assert( |
| !check_equality_comparable_with<int (S::*)(), int (S::*)() & noexcept>()); |
| static_assert( |
| !check_equality_comparable_with<int (S::*)(), int (S::*)() const&>()); |
| static_assert(!check_equality_comparable_with<int (S::*)(), |
| int (S::*)() const & noexcept>()); |
| static_assert( |
| !check_equality_comparable_with<int (S::*)(), int (S::*)() volatile&>()); |
| static_assert(!check_equality_comparable_with< |
| int (S::*)(), int (S::*)() volatile & noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)(), |
| int (S::*)() const volatile&>()); |
| static_assert(!check_equality_comparable_with< |
| int (S::*)(), int (S::*)() const volatile & noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)(), int (S::*)() &&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)(), |
| int (S::*)() && noexcept > ()); |
| static_assert( |
| !check_equality_comparable_with<int (S::*)(), int (S::*)() const&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)(), |
| int (S::*)() const&& noexcept > ()); |
| static_assert( |
| !check_equality_comparable_with<int (S::*)(), int (S::*)() volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)(), |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)(), |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)(), |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(check_equality_comparable_with<int (S::*)() noexcept, |
| int (S::*)() noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() noexcept, |
| int (S::*)() const>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() noexcept, |
| int (S::*)() const noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() noexcept, |
| int (S::*)() volatile>()); |
| static_assert(!check_equality_comparable_with< |
| int (S::*)() noexcept, int (S::*)() volatile noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() noexcept, |
| int (S::*)() const volatile>()); |
| static_assert(!check_equality_comparable_with< |
| int (S::*)() noexcept, int (S::*)() const volatile noexcept>()); |
| static_assert( |
| !check_equality_comparable_with<int (S::*)() noexcept, int (S::*)() &>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() noexcept, |
| int (S::*)() & noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() noexcept, |
| int (S::*)() const&>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() noexcept, |
| int (S::*)() const & noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() noexcept, |
| int (S::*)() volatile&>()); |
| static_assert(!check_equality_comparable_with< |
| int (S::*)() noexcept, int (S::*)() volatile & noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() noexcept, |
| int (S::*)() const volatile&>()); |
| static_assert(!check_equality_comparable_with< |
| int (S::*)() noexcept, int (S::*)() const volatile & noexcept>()); |
| static_assert( |
| !check_equality_comparable_with<int (S::*)() noexcept, int (S::*)() &&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() noexcept, |
| int (S::*)() && noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)() noexcept, |
| int (S::*)() const&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() noexcept, |
| int (S::*)() const&& noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)() noexcept, |
| int (S::*)() volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() noexcept, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)() noexcept, |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() noexcept, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert( |
| check_equality_comparable_with<int (S::*)() const, int (S::*)() const>()); |
| static_assert(check_equality_comparable_with<int (S::*)() const, |
| int (S::*)() const noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const, |
| int (S::*)() volatile>()); |
| static_assert(!check_equality_comparable_with< |
| int (S::*)() const, int (S::*)() volatile noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const, |
| int (S::*)() const volatile>()); |
| static_assert(!check_equality_comparable_with< |
| int (S::*)() const, int (S::*)() const volatile noexcept>()); |
| static_assert( |
| !check_equality_comparable_with<int (S::*)() const, int (S::*)() &>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const, |
| int (S::*)() & noexcept>()); |
| static_assert( |
| !check_equality_comparable_with<int (S::*)() const, int (S::*)() const&>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const, |
| int (S::*)() const & noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const, |
| int (S::*)() volatile&>()); |
| static_assert(!check_equality_comparable_with< |
| int (S::*)() const, int (S::*)() volatile & noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const, |
| int (S::*)() const volatile&>()); |
| static_assert(!check_equality_comparable_with< |
| int (S::*)() const, int (S::*)() const volatile & noexcept>()); |
| static_assert( |
| !check_equality_comparable_with<int (S::*)() const, int (S::*)() &&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() const, |
| int (S::*)() && noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const, |
| int (S::*)() const&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() const, |
| int (S::*)() const&& noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const, |
| int (S::*)() volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() const, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const, |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() const, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(check_equality_comparable_with<int (S::*)() const noexcept, |
| int (S::*)() const noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const noexcept, |
| int (S::*)() volatile>()); |
| static_assert(!check_equality_comparable_with< |
| int (S::*)() const noexcept, int (S::*)() volatile noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const noexcept, |
| int (S::*)() const volatile>()); |
| static_assert( |
| !check_equality_comparable_with<int (S::*)() const noexcept, |
| int (S::*)() const volatile noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const noexcept, |
| int (S::*)() &>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const noexcept, |
| int (S::*)() & noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const noexcept, |
| int (S::*)() const&>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const noexcept, |
| int (S::*)() const & noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const noexcept, |
| int (S::*)() volatile&>()); |
| static_assert(!check_equality_comparable_with< |
| int (S::*)() const noexcept, int (S::*)() volatile & noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const noexcept, |
| int (S::*)() const volatile&>()); |
| static_assert( |
| !check_equality_comparable_with<int (S::*)() const noexcept, |
| int (S::*)() const volatile & noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const noexcept, |
| int (S::*)() &&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() const noexcept, |
| int (S::*)() && noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const noexcept, |
| int (S::*)() const&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() const noexcept, |
| int (S::*)() const&& noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const noexcept, |
| int (S::*)() volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() const noexcept, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const noexcept, |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() const noexcept, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(check_equality_comparable_with<int (S::*)() volatile, |
| int (S::*)() volatile>()); |
| static_assert(check_equality_comparable_with<int (S::*)() volatile, |
| int (S::*)() volatile noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() volatile, |
| int (S::*)() const volatile>()); |
| static_assert(!check_equality_comparable_with< |
| int (S::*)() volatile, int (S::*)() const volatile noexcept>()); |
| static_assert( |
| !check_equality_comparable_with<int (S::*)() volatile, int (S::*)() &>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() volatile, |
| int (S::*)() & noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() volatile, |
| int (S::*)() const&>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() volatile, |
| int (S::*)() const & noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() volatile, |
| int (S::*)() volatile&>()); |
| static_assert(!check_equality_comparable_with< |
| int (S::*)() volatile, int (S::*)() volatile & noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() volatile, |
| int (S::*)() const volatile&>()); |
| static_assert(!check_equality_comparable_with< |
| int (S::*)() volatile, int (S::*)() const volatile & noexcept>()); |
| static_assert( |
| !check_equality_comparable_with<int (S::*)() volatile, int (S::*)() &&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() volatile, |
| int (S::*)() && noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)() volatile, |
| int (S::*)() const&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() volatile, |
| int (S::*)() const&& noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)() volatile, |
| int (S::*)() volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() volatile, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)() volatile, |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() volatile, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(check_equality_comparable_with<int (S::*)() volatile noexcept, |
| int (S::*)() volatile noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() volatile noexcept, |
| int (S::*)() const volatile>()); |
| static_assert( |
| !check_equality_comparable_with<int (S::*)() volatile noexcept, |
| int (S::*)() const volatile noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() volatile noexcept, |
| int (S::*)() &>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() volatile noexcept, |
| int (S::*)() & noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() volatile noexcept, |
| int (S::*)() const&>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() volatile noexcept, |
| int (S::*)() const & noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() volatile noexcept, |
| int (S::*)() volatile&>()); |
| static_assert( |
| !check_equality_comparable_with<int (S::*)() volatile noexcept, |
| int (S::*)() volatile & noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() volatile noexcept, |
| int (S::*)() const volatile&>()); |
| static_assert( |
| !check_equality_comparable_with<int (S::*)() volatile noexcept, |
| int (S::*)() const volatile & noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() volatile noexcept, |
| int (S::*)() &&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() volatile noexcept, |
| int (S::*)() && noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)() volatile noexcept, |
| int (S::*)() const&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() volatile noexcept, |
| int (S::*)() const&& noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)() volatile noexcept, |
| int (S::*)() volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() volatile noexcept, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)() volatile noexcept, |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() volatile noexcept, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(check_equality_comparable_with<int (S::*)() const volatile, |
| int (S::*)() const volatile>()); |
| static_assert( |
| check_equality_comparable_with<int (S::*)() const volatile, |
| int (S::*)() const volatile noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const volatile, |
| int (S::*)() &>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const volatile, |
| int (S::*)() & noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const volatile, |
| int (S::*)() const&>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const volatile, |
| int (S::*)() const & noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const volatile, |
| int (S::*)() volatile&>()); |
| static_assert(!check_equality_comparable_with< |
| int (S::*)() const volatile, int (S::*)() volatile & noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const volatile, |
| int (S::*)() const volatile&>()); |
| static_assert( |
| !check_equality_comparable_with<int (S::*)() const volatile, |
| int (S::*)() const volatile & noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const volatile, |
| int (S::*)() &&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() const volatile, |
| int (S::*)() && noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const volatile, |
| int (S::*)() const&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() const volatile, |
| int (S::*)() const&& noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const volatile, |
| int (S::*)() volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() const volatile, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const volatile, |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() const volatile, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert( |
| check_equality_comparable_with<int (S::*)() const volatile noexcept, |
| int (S::*)() const volatile noexcept>()); |
| static_assert(!check_equality_comparable_with< |
| int (S::*)() const volatile noexcept, int (S::*)() &>()); |
| static_assert(!check_equality_comparable_with< |
| int (S::*)() const volatile noexcept, int (S::*)() & noexcept>()); |
| static_assert(!check_equality_comparable_with< |
| int (S::*)() const volatile noexcept, int (S::*)() const&>()); |
| static_assert( |
| !check_equality_comparable_with<int (S::*)() const volatile noexcept, |
| int (S::*)() const & noexcept>()); |
| static_assert(!check_equality_comparable_with< |
| int (S::*)() const volatile noexcept, int (S::*)() volatile&>()); |
| static_assert( |
| !check_equality_comparable_with<int (S::*)() const volatile noexcept, |
| int (S::*)() volatile & noexcept>()); |
| static_assert( |
| !check_equality_comparable_with<int (S::*)() const volatile noexcept, |
| int (S::*)() const volatile&>()); |
| static_assert( |
| !check_equality_comparable_with<int (S::*)() const volatile noexcept, |
| int (S::*)() const volatile & noexcept>()); |
| static_assert(!check_equality_comparable_with< |
| int (S::*)() const volatile noexcept, int (S::*)() &&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() |
| const volatile noexcept, |
| int (S::*)() && noexcept > ()); |
| static_assert(!check_equality_comparable_with< |
| int (S::*)() const volatile noexcept, int (S::*)() const&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() |
| const volatile noexcept, |
| int (S::*)() const&& noexcept > ()); |
| static_assert(!check_equality_comparable_with< |
| int (S::*)() const volatile noexcept, int (S::*)() volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() |
| const volatile noexcept, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert( |
| !check_equality_comparable_with<int (S::*)() const volatile noexcept, |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() |
| const volatile noexcept, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(check_equality_comparable_with<int (S::*)() &, int (S::*)() &>()); |
| static_assert( |
| check_equality_comparable_with<int (S::*)() &, int (S::*)() & noexcept>()); |
| static_assert( |
| !check_equality_comparable_with<int (S::*)() &, int (S::*)() const&>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() &, |
| int (S::*)() const & noexcept>()); |
| static_assert( |
| !check_equality_comparable_with<int (S::*)() &, int (S::*)() volatile&>()); |
| static_assert(!check_equality_comparable_with< |
| int (S::*)() &, int (S::*)() volatile & noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() &, |
| int (S::*)() const volatile&>()); |
| static_assert(!check_equality_comparable_with< |
| int (S::*)() &, int (S::*)() const volatile & noexcept>()); |
| static_assert( |
| !check_equality_comparable_with<int (S::*)() &, int (S::*)() &&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() &, |
| int (S::*)() && noexcept > ()); |
| static_assert( |
| !check_equality_comparable_with<int (S::*)() &, int (S::*)() const&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() &, |
| int (S::*)() const&& noexcept > ()); |
| static_assert( |
| !check_equality_comparable_with<int (S::*)() &, int (S::*)() volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() &, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)() &, |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() &, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(check_equality_comparable_with<int (S::*)() & noexcept, |
| int (S::*)() & noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() & noexcept, |
| int (S::*)() const&>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() & noexcept, |
| int (S::*)() const & noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() & noexcept, |
| int (S::*)() volatile&>()); |
| static_assert(!check_equality_comparable_with< |
| int (S::*)() & noexcept, int (S::*)() volatile & noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() & noexcept, |
| int (S::*)() const volatile&>()); |
| static_assert( |
| !check_equality_comparable_with<int (S::*)() & noexcept, |
| int (S::*)() const volatile & noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() & noexcept, |
| int (S::*)() &&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() & noexcept, |
| int (S::*)() && noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)() & noexcept, |
| int (S::*)() const&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() & noexcept, |
| int (S::*)() const&& noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)() & noexcept, |
| int (S::*)() volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() & noexcept, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)() & noexcept, |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() & noexcept, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert( |
| check_equality_comparable_with<int (S::*)() const&, int (S::*)() const&>()); |
| static_assert(check_equality_comparable_with<int (S::*)() const&, |
| int (S::*)() const & noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const&, |
| int (S::*)() volatile&>()); |
| static_assert(!check_equality_comparable_with< |
| int (S::*)() const&, int (S::*)() volatile & noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const&, |
| int (S::*)() const volatile&>()); |
| static_assert(!check_equality_comparable_with< |
| int (S::*)() const&, int (S::*)() const volatile & noexcept>()); |
| static_assert( |
| !check_equality_comparable_with<int (S::*)() const&, int (S::*)() &&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() const&, |
| int (S::*)() && noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const&, |
| int (S::*)() const&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() const&, |
| int (S::*)() const&& noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const&, |
| int (S::*)() volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() const&, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const&, |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() const&, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(check_equality_comparable_with<int (S::*)() const & noexcept, |
| int (S::*)() const & noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const & noexcept, |
| int (S::*)() volatile&>()); |
| static_assert( |
| !check_equality_comparable_with<int (S::*)() const & noexcept, |
| int (S::*)() volatile & noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const & noexcept, |
| int (S::*)() const volatile&>()); |
| static_assert( |
| !check_equality_comparable_with<int (S::*)() const & noexcept, |
| int (S::*)() const volatile & noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const & noexcept, |
| int (S::*)() &&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() const& noexcept, |
| int (S::*)() && noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const & noexcept, |
| int (S::*)() const&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() const& noexcept, |
| int (S::*)() const&& noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const & noexcept, |
| int (S::*)() volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() const& noexcept, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const & noexcept, |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() const& noexcept, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(check_equality_comparable_with<int (S::*)() volatile&, |
| int (S::*)() volatile&>()); |
| static_assert(check_equality_comparable_with< |
| int (S::*)() volatile&, int (S::*)() volatile & noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() volatile&, |
| int (S::*)() const volatile&>()); |
| static_assert( |
| !check_equality_comparable_with<int (S::*)() volatile&, |
| int (S::*)() const volatile & noexcept>()); |
| static_assert( |
| !check_equality_comparable_with<int (S::*)() volatile&, int (S::*)() &&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() volatile&, |
| int (S::*)() && noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)() volatile&, |
| int (S::*)() const&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() volatile&, |
| int (S::*)() const&& noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)() volatile&, |
| int (S::*)() volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() volatile&, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)() volatile&, |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() volatile&, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert( |
| check_equality_comparable_with<int (S::*)() volatile & noexcept, |
| int (S::*)() volatile & noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() volatile & noexcept, |
| int (S::*)() const volatile&>()); |
| static_assert( |
| !check_equality_comparable_with<int (S::*)() volatile & noexcept, |
| int (S::*)() const volatile & noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() volatile & noexcept, |
| int (S::*)() &&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() volatile& noexcept, |
| int (S::*)() && noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)() volatile & noexcept, |
| int (S::*)() const&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() volatile& noexcept, |
| int (S::*)() const&& noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)() volatile & noexcept, |
| int (S::*)() volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() volatile& noexcept, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)() volatile & noexcept, |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() volatile& noexcept, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(check_equality_comparable_with<int (S::*)() const volatile&, |
| int (S::*)() const volatile&>()); |
| static_assert( |
| check_equality_comparable_with<int (S::*)() const volatile&, |
| int (S::*)() const volatile & noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const volatile&, |
| int (S::*)() &&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() const volatile&, |
| int (S::*)() && noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const volatile&, |
| int (S::*)() const&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() const volatile&, |
| int (S::*)() const&& noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const volatile&, |
| int (S::*)() volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() const volatile&, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const volatile&, |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() const volatile&, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert( |
| check_equality_comparable_with<int (S::*)() const volatile & noexcept, |
| int (S::*)() const volatile & noexcept>()); |
| static_assert(!check_equality_comparable_with< |
| int (S::*)() const volatile & noexcept, int (S::*)() &&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() |
| const volatile& noexcept, |
| int (S::*)() && noexcept > ()); |
| static_assert(!check_equality_comparable_with< |
| int (S::*)() const volatile & noexcept, int (S::*)() const&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() |
| const volatile& noexcept, |
| int (S::*)() const&& noexcept > ()); |
| static_assert( |
| !check_equality_comparable_with<int (S::*)() const volatile & noexcept, |
| int (S::*)() volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() |
| const volatile& noexcept, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert( |
| !check_equality_comparable_with<int (S::*)() const volatile & noexcept, |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() |
| const volatile& noexcept, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert( |
| check_equality_comparable_with<int (S::*)() &&, int (S::*)() &&>()); |
| static_assert(check_equality_comparable_with<int (S::*)() &&, |
| int (S::*)() && noexcept>()); |
| static_assert( |
| !check_equality_comparable_with<int (S::*)() &&, int (S::*)() const&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() &&, |
| int (S::*)() const&& noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)() &&, |
| int (S::*)() volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() &&, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)() &&, |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() &&, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(check_equality_comparable_with<int (S::*)() && noexcept, |
| int (S::*)() && noexcept>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() && noexcept, |
| int (S::*)() const&& > ()); |
| static_assert(!check_equality_comparable_with < int (S::*)() && noexcept, |
| int (S::*)() const&& noexcept > ()); |
| static_assert(!check_equality_comparable_with < int (S::*)() && noexcept, |
| int (S::*)() volatile&& > ()); |
| static_assert(!check_equality_comparable_with < int (S::*)() && noexcept, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_equality_comparable_with < int (S::*)() && noexcept, |
| int (S::*)() const volatile&& > ()); |
| static_assert(!check_equality_comparable_with < int (S::*)() && noexcept, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(check_equality_comparable_with<int (S::*)() const&&, |
| int (S::*)() const&&>()); |
| static_assert(check_equality_comparable_with<int (S::*)() const&&, |
| int (S::*)() const && noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const&&, |
| int (S::*)() volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() const&&, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_equality_comparable_with<int (S::*)() const&&, |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() const&&, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(check_equality_comparable_with<int (S::*)() const && noexcept, |
| int (S::*)() const && noexcept>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() const&& noexcept, |
| int (S::*)() volatile&& > ()); |
| static_assert(!check_equality_comparable_with < int (S::*)() const&& noexcept, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_equality_comparable_with < int (S::*)() const&& noexcept, |
| int (S::*)() const volatile&& > ()); |
| static_assert(!check_equality_comparable_with < int (S::*)() const&& noexcept, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(check_equality_comparable_with<int (S::*)() volatile&&, |
| int (S::*)() volatile&&>()); |
| static_assert(check_equality_comparable_with< |
| int (S::*)() volatile&&, int (S::*)() volatile && noexcept>()); |
| static_assert(!check_equality_comparable_with<int (S::*)() volatile&&, |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_equality_comparable_with < int (S::*)() volatile&&, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert( |
| check_equality_comparable_with<int (S::*)() volatile && noexcept, |
| int (S::*)() volatile && noexcept>()); |
| static_assert(!check_equality_comparable_with < |
| int (S::*)() volatile&& noexcept, |
| int (S::*)() const volatile&& > ()); |
| static_assert(!check_equality_comparable_with < |
| int (S::*)() volatile&& noexcept, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(check_equality_comparable_with<int (S::*)() const volatile&&, |
| int (S::*)() const volatile&&>()); |
| static_assert( |
| check_equality_comparable_with<int (S::*)() const volatile&&, |
| int (S::*)() const volatile && noexcept>()); |
| static_assert( |
| check_equality_comparable_with<int (S::*)() const volatile && noexcept, |
| int (S::*)() const volatile && noexcept>()); |
| |
| static_assert(!check_equality_comparable_with<std::nullptr_t, int>()); |
| static_assert(check_equality_comparable_with<std::nullptr_t, int*>()); |
| static_assert(check_equality_comparable_with<std::nullptr_t, int[5]>()); |
| static_assert(check_equality_comparable_with<std::nullptr_t, int (*)()>()); |
| static_assert(check_equality_comparable_with<std::nullptr_t, int (&)()>()); |
| static_assert(check_equality_comparable_with<std::nullptr_t, int (S::*)()>()); |
| static_assert( |
| check_equality_comparable_with<std::nullptr_t, int (S::*)() noexcept>()); |
| static_assert( |
| check_equality_comparable_with<std::nullptr_t, int (S::*)() const>()); |
| static_assert(check_equality_comparable_with<std::nullptr_t, |
| int (S::*)() const noexcept>()); |
| static_assert( |
| check_equality_comparable_with<std::nullptr_t, int (S::*)() volatile>()); |
| static_assert(check_equality_comparable_with<std::nullptr_t, |
| int (S::*)() volatile noexcept>()); |
| static_assert(check_equality_comparable_with<std::nullptr_t, |
| int (S::*)() const volatile>()); |
| static_assert(check_equality_comparable_with< |
| std::nullptr_t, int (S::*)() const volatile noexcept>()); |
| static_assert(check_equality_comparable_with<std::nullptr_t, int (S::*)() &>()); |
| static_assert( |
| check_equality_comparable_with<std::nullptr_t, int (S::*)() & noexcept>()); |
| static_assert( |
| check_equality_comparable_with<std::nullptr_t, int (S::*)() const&>()); |
| static_assert(check_equality_comparable_with<std::nullptr_t, |
| int (S::*)() const & noexcept>()); |
| static_assert( |
| check_equality_comparable_with<std::nullptr_t, int (S::*)() volatile&>()); |
| static_assert(check_equality_comparable_with< |
| std::nullptr_t, int (S::*)() volatile & noexcept>()); |
| static_assert(check_equality_comparable_with<std::nullptr_t, |
| int (S::*)() const volatile&>()); |
| static_assert(check_equality_comparable_with< |
| std::nullptr_t, int (S::*)() const volatile & noexcept>()); |
| static_assert( |
| check_equality_comparable_with<std::nullptr_t, int (S::*)() &&>()); |
| static_assert( |
| check_equality_comparable_with<std::nullptr_t, int (S::*)() && noexcept>()); |
| static_assert( |
| check_equality_comparable_with<std::nullptr_t, int (S::*)() const&&>()); |
| static_assert(check_equality_comparable_with<std::nullptr_t, |
| int (S::*)() const && noexcept>()); |
| static_assert( |
| check_equality_comparable_with<std::nullptr_t, int (S::*)() volatile&&>()); |
| static_assert(check_equality_comparable_with< |
| std::nullptr_t, int (S::*)() volatile && noexcept>()); |
| static_assert(check_equality_comparable_with<std::nullptr_t, |
| int (S::*)() const volatile&&>()); |
| static_assert(check_equality_comparable_with< |
| std::nullptr_t, int (S::*)() const volatile && noexcept>()); |
| |
| static_assert(!std::equality_comparable_with<void, int>); |
| static_assert(!std::equality_comparable_with<void, int*>); |
| static_assert(!std::equality_comparable_with<void, std::nullptr_t>); |
| static_assert(!std::equality_comparable_with<void, int[5]>); |
| static_assert(!std::equality_comparable_with<void, int (*)()>); |
| static_assert(!std::equality_comparable_with<void, int (&)()>); |
| static_assert(!std::equality_comparable_with<void, int S::*>); |
| static_assert(!std::equality_comparable_with<void, int (S::*)()>); |
| static_assert(!std::equality_comparable_with<void, int (S::*)() noexcept>); |
| static_assert(!std::equality_comparable_with<void, int (S::*)() const>); |
| static_assert( |
| !std::equality_comparable_with<void, int (S::*)() const noexcept>); |
| static_assert(!std::equality_comparable_with<void, int (S::*)() volatile>); |
| static_assert( |
| !std::equality_comparable_with<void, int (S::*)() volatile noexcept>); |
| static_assert( |
| !std::equality_comparable_with<void, int (S::*)() const volatile>); |
| static_assert( |
| !std::equality_comparable_with<void, int (S::*)() const volatile noexcept>); |
| static_assert(!std::equality_comparable_with<void, int (S::*)() &>); |
| static_assert(!std::equality_comparable_with<void, int (S::*)() & noexcept>); |
| static_assert(!std::equality_comparable_with<void, int (S::*)() const&>); |
| static_assert( |
| !std::equality_comparable_with<void, int (S::*)() const & noexcept>); |
| static_assert(!std::equality_comparable_with<void, int (S::*)() volatile&>); |
| static_assert( |
| !std::equality_comparable_with<void, int (S::*)() volatile & noexcept>); |
| static_assert( |
| !std::equality_comparable_with<void, int (S::*)() const volatile&>); |
| static_assert(!std::equality_comparable_with<void, int (S::*)() const volatile & |
| noexcept>); |
| static_assert(!std::equality_comparable_with<void, int (S::*)() &&>); |
| static_assert(!std::equality_comparable_with < void, |
| int (S::*)() && noexcept >); |
| static_assert(!std::equality_comparable_with<void, int (S::*)() const&&>); |
| static_assert(!std::equality_comparable_with < void, |
| int (S::*)() const&& noexcept >); |
| static_assert(!std::equality_comparable_with<void, int (S::*)() volatile&&>); |
| static_assert(!std::equality_comparable_with < void, |
| int (S::*)() volatile&& noexcept >); |
| static_assert( |
| !std::equality_comparable_with<void, int (S::*)() const volatile&&>); |
| static_assert(!std::equality_comparable_with < void, |
| int (S::*)() const volatile&& noexcept >); |
| } // namespace fundamentals |
| |
| namespace standard_types { |
| static_assert(check_equality_comparable_with<std::array<int, 10>, |
| std::array<int, 10> >()); |
| static_assert(!check_equality_comparable_with<std::array<int, 10>, |
| std::array<double, 10> >()); |
| static_assert( |
| check_equality_comparable_with<std::deque<int>, std::deque<int> >()); |
| static_assert( |
| !check_equality_comparable_with<std::deque<int>, std::vector<int> >()); |
| static_assert(check_equality_comparable_with<std::forward_list<int>, |
| std::forward_list<int> >()); |
| static_assert(!check_equality_comparable_with<std::forward_list<int>, |
| std::vector<int> >()); |
| static_assert( |
| check_equality_comparable_with<std::list<int>, std::list<int> >()); |
| static_assert( |
| !check_equality_comparable_with<std::list<int>, std::vector<int> >()); |
| |
| #ifndef _LIBCPP_HAS_NO_THREADS |
| static_assert(!check_equality_comparable_with<std::lock_guard<std::mutex>, |
| std::lock_guard<std::mutex> >()); |
| static_assert(!check_equality_comparable_with<std::lock_guard<std::mutex>, |
| std::vector<int> >()); |
| static_assert(!check_equality_comparable_with<std::mutex, std::mutex>()); |
| static_assert(!check_equality_comparable_with<std::mutex, std::vector<int> >()); |
| #endif |
| |
| static_assert(check_equality_comparable_with<std::map<int, void*>, |
| std::map<int, void*> >()); |
| static_assert( |
| !check_equality_comparable_with<std::map<int, void*>, std::vector<int> >()); |
| static_assert( |
| check_equality_comparable_with<std::optional<std::vector<int> >, |
| std::optional<std::vector<int> > >()); |
| static_assert(check_equality_comparable_with<std::optional<std::vector<int> >, |
| std::vector<int> >()); |
| static_assert( |
| check_equality_comparable_with<std::vector<int>, std::vector<int> >()); |
| static_assert(!check_equality_comparable_with<std::vector<int>, int>()); |
| } // namespace standard_types |
| |
| namespace types_fit_for_purpose { |
| static_assert( |
| check_equality_comparable_with<cxx20_member_eq, cxx20_member_eq>()); |
| static_assert( |
| check_equality_comparable_with<cxx20_friend_eq, cxx20_friend_eq>()); |
| static_assert( |
| !check_equality_comparable_with<cxx20_member_eq, cxx20_friend_eq>()); |
| |
| static_assert(check_equality_comparable_with<member_three_way_comparable, |
| member_three_way_comparable>()); |
| static_assert(check_equality_comparable_with<friend_three_way_comparable, |
| friend_three_way_comparable>()); |
| static_assert(!check_equality_comparable_with<member_three_way_comparable, |
| friend_three_way_comparable>()); |
| |
| static_assert( |
| check_equality_comparable_with<explicit_operators, explicit_operators>()); |
| static_assert(check_equality_comparable_with<equality_comparable_with_ec1, |
| equality_comparable_with_ec1>()); |
| static_assert(check_equality_comparable_with<eq_neq_different_return_types, |
| eq_neq_different_return_types>()); |
| static_assert(check_equality_comparable_with<explicit_operators, |
| equality_comparable_with_ec1>()); |
| static_assert(check_equality_comparable_with<explicit_operators, |
| eq_neq_different_return_types>()); |
| |
| static_assert(check_equality_comparable_with<one_way_eq, one_way_eq>()); |
| static_assert( |
| std::common_reference_with<one_way_eq const&, explicit_operators const&>); |
| static_assert( |
| !check_equality_comparable_with<one_way_eq, explicit_operators>()); |
| |
| static_assert(check_equality_comparable_with<one_way_ne, one_way_ne>()); |
| static_assert( |
| std::common_reference_with<one_way_ne const&, explicit_operators const&>); |
| static_assert( |
| !check_equality_comparable_with<one_way_ne, explicit_operators>()); |
| } // namespace types_fit_for_purpose |
| |
| int main(int, char**) { return 0; } |