124dd2d2fSChristopher Di Bella //===----------------------------------------------------------------------===// 224dd2d2fSChristopher Di Bella // 324dd2d2fSChristopher Di Bella // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 424dd2d2fSChristopher Di Bella // See https://llvm.org/LICENSE.txt for license information. 524dd2d2fSChristopher Di Bella // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 624dd2d2fSChristopher Di Bella // 724dd2d2fSChristopher Di Bella //===----------------------------------------------------------------------===// 824dd2d2fSChristopher Di Bella 924dd2d2fSChristopher Di Bella // UNSUPPORTED: c++03, c++11, c++14, c++17 1024dd2d2fSChristopher Di Bella 1124dd2d2fSChristopher Di Bella // template<class T, class U> 1224dd2d2fSChristopher Di Bella // concept equality_comparable_with = // see below 1324dd2d2fSChristopher Di Bella 1424dd2d2fSChristopher Di Bella #include <concepts> 1524dd2d2fSChristopher Di Bella 1624dd2d2fSChristopher Di Bella #include <array> 17*e99c4906SNikolas Klauser #include <cstddef> 1824dd2d2fSChristopher Di Bella #include <deque> 1924dd2d2fSChristopher Di Bella #include <forward_list> 2024dd2d2fSChristopher Di Bella #include <list> 2124dd2d2fSChristopher Di Bella #include <map> 2224dd2d2fSChristopher Di Bella #include <optional> 2324dd2d2fSChristopher Di Bella #include <vector> 2424dd2d2fSChristopher Di Bella 2584bb1459SMark de Wever #include "test_macros.h" 2684bb1459SMark de Wever 2784bb1459SMark de Wever #ifndef TEST_HAS_NO_THREADS 28e1ce3dabSLouis Dionne # include <mutex> 29e1ce3dabSLouis Dionne #endif 30e1ce3dabSLouis Dionne 31879cbac0Szoecarver #include "compare_types.h" 3224dd2d2fSChristopher Di Bella 3324dd2d2fSChristopher Di Bella template <class T, class U> 3424dd2d2fSChristopher Di Bella constexpr bool check_equality_comparable_with() { 3524dd2d2fSChristopher Di Bella constexpr bool result = std::equality_comparable_with<T, U>; 3624dd2d2fSChristopher Di Bella static_assert(std::equality_comparable_with<U, T> == result); 3724dd2d2fSChristopher Di Bella static_assert(std::equality_comparable_with<T, U const> == result); 3824dd2d2fSChristopher Di Bella static_assert(std::equality_comparable_with<T const, U const> == result); 3924dd2d2fSChristopher Di Bella static_assert(std::equality_comparable_with<T, U const&> == result); 4024dd2d2fSChristopher Di Bella static_assert(std::equality_comparable_with<T const, U const&> == result); 4124dd2d2fSChristopher Di Bella static_assert(std::equality_comparable_with<T&, U const> == result); 4224dd2d2fSChristopher Di Bella static_assert(std::equality_comparable_with<T const&, U const> == result); 4324dd2d2fSChristopher Di Bella static_assert(std::equality_comparable_with<T&, U const&> == result); 4424dd2d2fSChristopher Di Bella static_assert(std::equality_comparable_with<T const&, U const&> == result); 4524dd2d2fSChristopher Di Bella static_assert(std::equality_comparable_with<T, U const&&> == result); 4624dd2d2fSChristopher Di Bella static_assert(std::equality_comparable_with<T const, U const&&> == result); 4724dd2d2fSChristopher Di Bella static_assert(std::equality_comparable_with<T&, U const&&> == result); 4824dd2d2fSChristopher Di Bella static_assert(std::equality_comparable_with<T const&, U const&&> == result); 4924dd2d2fSChristopher Di Bella static_assert(std::equality_comparable_with<T&&, U const> == result); 5024dd2d2fSChristopher Di Bella static_assert(std::equality_comparable_with<T const&&, U const> == result); 5124dd2d2fSChristopher Di Bella static_assert(std::equality_comparable_with<T&&, U const&> == result); 5224dd2d2fSChristopher Di Bella static_assert(std::equality_comparable_with<T const&&, U const&> == result); 5324dd2d2fSChristopher Di Bella static_assert(std::equality_comparable_with<T&&, U const&&> == result); 5424dd2d2fSChristopher Di Bella static_assert(std::equality_comparable_with<T const&&, U const&&> == result); 5524dd2d2fSChristopher Di Bella return result; 5624dd2d2fSChristopher Di Bella } 5724dd2d2fSChristopher Di Bella 5824dd2d2fSChristopher Di Bella namespace fundamentals { 5924dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<int, int>()); 6024dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<int, bool>()); 6124dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<int, char>()); 6224dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<int, wchar_t>()); 6324dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<int, double>()); 6424dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int, int*>()); 6524dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int, int[5]>()); 6624dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int, int (*)()>()); 6724dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int, int (&)()>()); 6824dd2d2fSChristopher Di Bella 6924dd2d2fSChristopher Di Bella struct S {}; 7024dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int, int S::*>()); 7124dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int, int (S::*)()>()); 7224dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int, int (S::*)() noexcept>()); 7324dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int, int (S::*)() const>()); 7424dd2d2fSChristopher Di Bella static_assert( 7524dd2d2fSChristopher Di Bella !check_equality_comparable_with<int, int (S::*)() const noexcept>()); 7624dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int, int (S::*)() volatile>()); 7724dd2d2fSChristopher Di Bella static_assert( 7824dd2d2fSChristopher Di Bella !check_equality_comparable_with<int, int (S::*)() volatile noexcept>()); 7924dd2d2fSChristopher Di Bella static_assert( 8024dd2d2fSChristopher Di Bella !check_equality_comparable_with<int, int (S::*)() const volatile>()); 8124dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 8224dd2d2fSChristopher Di Bella int, int (S::*)() const volatile noexcept>()); 8324dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int, int (S::*)() &>()); 8424dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int, int (S::*)() & noexcept>()); 8524dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int, int (S::*)() const&>()); 8624dd2d2fSChristopher Di Bella static_assert( 8724dd2d2fSChristopher Di Bella !check_equality_comparable_with<int, int (S::*)() const & noexcept>()); 8824dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int, int (S::*)() volatile&>()); 8924dd2d2fSChristopher Di Bella static_assert( 9024dd2d2fSChristopher Di Bella !check_equality_comparable_with<int, int (S::*)() volatile & noexcept>()); 9124dd2d2fSChristopher Di Bella static_assert( 9224dd2d2fSChristopher Di Bella !check_equality_comparable_with<int, int (S::*)() const volatile&>()); 9324dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int, int (S::*)() const volatile & 9424dd2d2fSChristopher Di Bella noexcept>()); 9524dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int, int (S::*)() &&>()); 9624dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int, 9724dd2d2fSChristopher Di Bella int (S::*)() && noexcept > ()); 9824dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int, int (S::*)() const&&>()); 9924dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int, 10024dd2d2fSChristopher Di Bella int (S::*)() const&& noexcept > ()); 10124dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int, int (S::*)() volatile&&>()); 10224dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int, 10324dd2d2fSChristopher Di Bella int (S::*)() volatile&& noexcept > ()); 10424dd2d2fSChristopher Di Bella static_assert( 10524dd2d2fSChristopher Di Bella !check_equality_comparable_with<int, int (S::*)() const volatile&&>()); 10624dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int, 10724dd2d2fSChristopher Di Bella int (S::*)() const volatile&& noexcept > ()); 10824dd2d2fSChristopher Di Bella 10924dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<int*, int*>()); 11024dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<int*, int[5]>()); 11124dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int*, int (*)()>()); 11224dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int*, int (&)()>()); 11324dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int*, int (S::*)()>()); 11424dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int*, int (S::*)() noexcept>()); 11524dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int*, int (S::*)() const>()); 11624dd2d2fSChristopher Di Bella static_assert( 11724dd2d2fSChristopher Di Bella !check_equality_comparable_with<int*, int (S::*)() const noexcept>()); 11824dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int*, int (S::*)() volatile>()); 11924dd2d2fSChristopher Di Bella static_assert( 12024dd2d2fSChristopher Di Bella !check_equality_comparable_with<int*, int (S::*)() volatile noexcept>()); 12124dd2d2fSChristopher Di Bella static_assert( 12224dd2d2fSChristopher Di Bella !check_equality_comparable_with<int*, int (S::*)() const volatile>()); 12324dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 12424dd2d2fSChristopher Di Bella int*, int (S::*)() const volatile noexcept>()); 12524dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int*, int (S::*)() &>()); 12624dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int*, int (S::*)() & noexcept>()); 12724dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int*, int (S::*)() const&>()); 12824dd2d2fSChristopher Di Bella static_assert( 12924dd2d2fSChristopher Di Bella !check_equality_comparable_with<int*, int (S::*)() const & noexcept>()); 13024dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int*, int (S::*)() volatile&>()); 13124dd2d2fSChristopher Di Bella static_assert( 13224dd2d2fSChristopher Di Bella !check_equality_comparable_with<int*, int (S::*)() volatile & noexcept>()); 13324dd2d2fSChristopher Di Bella static_assert( 13424dd2d2fSChristopher Di Bella !check_equality_comparable_with<int*, int (S::*)() const volatile&>()); 13524dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 13624dd2d2fSChristopher Di Bella int*, int (S::*)() const volatile & noexcept>()); 13724dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int*, int (S::*)() &&>()); 13824dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int*, 13924dd2d2fSChristopher Di Bella int (S::*)() && noexcept > ()); 14024dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int*, int (S::*)() const&&>()); 14124dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int*, 14224dd2d2fSChristopher Di Bella int (S::*)() const&& noexcept > ()); 14324dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int*, int (S::*)() volatile&&>()); 14424dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int*, 14524dd2d2fSChristopher Di Bella int (S::*)() volatile&& noexcept > ()); 14624dd2d2fSChristopher Di Bella static_assert( 14724dd2d2fSChristopher Di Bella !check_equality_comparable_with<int*, int (S::*)() const volatile&&>()); 14824dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int*, 14924dd2d2fSChristopher Di Bella int (S::*)() const volatile&& noexcept > ()); 15024dd2d2fSChristopher Di Bella 15124dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<int[5], int[5]>()); 15224dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int[5], int (*)()>()); 15324dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int[5], int (&)()>()); 15424dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int[5], int (S::*)()>()); 15524dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int[5], int (S::*)() noexcept>()); 15624dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int[5], int (S::*)() const>()); 15724dd2d2fSChristopher Di Bella static_assert( 15824dd2d2fSChristopher Di Bella !check_equality_comparable_with<int[5], int (S::*)() const noexcept>()); 15924dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int[5], int (S::*)() volatile>()); 16024dd2d2fSChristopher Di Bella static_assert( 16124dd2d2fSChristopher Di Bella !check_equality_comparable_with<int[5], int (S::*)() volatile noexcept>()); 16224dd2d2fSChristopher Di Bella static_assert( 16324dd2d2fSChristopher Di Bella !check_equality_comparable_with<int[5], int (S::*)() const volatile>()); 16424dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 16524dd2d2fSChristopher Di Bella int[5], int (S::*)() const volatile noexcept>()); 16624dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int[5], int (S::*)() &>()); 16724dd2d2fSChristopher Di Bella static_assert( 16824dd2d2fSChristopher Di Bella !check_equality_comparable_with<int[5], int (S::*)() & noexcept>()); 16924dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int[5], int (S::*)() const&>()); 17024dd2d2fSChristopher Di Bella static_assert( 17124dd2d2fSChristopher Di Bella !check_equality_comparable_with<int[5], int (S::*)() const & noexcept>()); 17224dd2d2fSChristopher Di Bella static_assert( 17324dd2d2fSChristopher Di Bella !check_equality_comparable_with<int[5], int (S::*)() volatile&>()); 17424dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int[5], int (S::*)() volatile & 17524dd2d2fSChristopher Di Bella noexcept>()); 17624dd2d2fSChristopher Di Bella static_assert( 17724dd2d2fSChristopher Di Bella !check_equality_comparable_with<int[5], int (S::*)() const volatile&>()); 17824dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 17924dd2d2fSChristopher Di Bella int[5], int (S::*)() const volatile & noexcept>()); 18024dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int[5], int (S::*)() &&>()); 18124dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int[5], 18224dd2d2fSChristopher Di Bella int (S::*)() && noexcept > ()); 18324dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int[5], int (S::*)() const&&>()); 18424dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int[5], 18524dd2d2fSChristopher Di Bella int (S::*)() const&& noexcept > ()); 18624dd2d2fSChristopher Di Bella static_assert( 18724dd2d2fSChristopher Di Bella !check_equality_comparable_with<int[5], int (S::*)() volatile&&>()); 18824dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int[5], 18924dd2d2fSChristopher Di Bella int (S::*)() volatile&& noexcept > ()); 19024dd2d2fSChristopher Di Bella static_assert( 19124dd2d2fSChristopher Di Bella !check_equality_comparable_with<int[5], int (S::*)() const volatile&&>()); 19224dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int[5], 19324dd2d2fSChristopher Di Bella int (S::*)() const volatile&& noexcept > ()); 19424dd2d2fSChristopher Di Bella 19524dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<int (*)(), int (*)()>()); 19624dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<int (*)(), int (&)()>()); 19724dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (*)(), int (S::*)()>()); 19824dd2d2fSChristopher Di Bella static_assert( 19924dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (*)(), int (S::*)() noexcept>()); 20024dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (*)(), int (S::*)() const>()); 20124dd2d2fSChristopher Di Bella static_assert( 20224dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (*)(), int (S::*)() const noexcept>()); 20324dd2d2fSChristopher Di Bella static_assert( 20424dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (*)(), int (S::*)() volatile>()); 20524dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 20624dd2d2fSChristopher Di Bella int (*)(), int (S::*)() volatile noexcept>()); 20724dd2d2fSChristopher Di Bella static_assert( 20824dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (*)(), int (S::*)() const volatile>()); 20924dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 21024dd2d2fSChristopher Di Bella int (*)(), int (S::*)() const volatile noexcept>()); 21124dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (*)(), int (S::*)() &>()); 21224dd2d2fSChristopher Di Bella static_assert( 21324dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (*)(), int (S::*)() & noexcept>()); 21424dd2d2fSChristopher Di Bella static_assert( 21524dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (*)(), int (S::*)() const&>()); 21624dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (*)(), 21724dd2d2fSChristopher Di Bella int (S::*)() const & noexcept>()); 21824dd2d2fSChristopher Di Bella static_assert( 21924dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (*)(), int (S::*)() volatile&>()); 22024dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (*)(), int (S::*)() volatile & 22124dd2d2fSChristopher Di Bella noexcept>()); 22224dd2d2fSChristopher Di Bella static_assert( 22324dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (*)(), int (S::*)() const volatile&>()); 22424dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 22524dd2d2fSChristopher Di Bella int (*)(), int (S::*)() const volatile & noexcept>()); 22624dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (*)(), int (S::*)() &&>()); 22724dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (*)(), 22824dd2d2fSChristopher Di Bella int (S::*)() && noexcept > ()); 22924dd2d2fSChristopher Di Bella static_assert( 23024dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (*)(), int (S::*)() const&&>()); 23124dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (*)(), 23224dd2d2fSChristopher Di Bella int (S::*)() const&& noexcept > ()); 23324dd2d2fSChristopher Di Bella static_assert( 23424dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (*)(), int (S::*)() volatile&&>()); 23524dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (*)(), 23624dd2d2fSChristopher Di Bella int (S::*)() volatile&& noexcept > ()); 23724dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (*)(), 23824dd2d2fSChristopher Di Bella int (S::*)() const volatile&&>()); 23924dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (*)(), 24024dd2d2fSChristopher Di Bella int (S::*)() const volatile&& noexcept > ()); 24124dd2d2fSChristopher Di Bella 24224dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<int (&)(), int (&)()>()); 24324dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (&)(), int (S::*)()>()); 24424dd2d2fSChristopher Di Bella static_assert( 24524dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (&)(), int (S::*)() noexcept>()); 24624dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (&)(), int (S::*)() const>()); 24724dd2d2fSChristopher Di Bella static_assert( 24824dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (&)(), int (S::*)() const noexcept>()); 24924dd2d2fSChristopher Di Bella static_assert( 25024dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (&)(), int (S::*)() volatile>()); 25124dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 25224dd2d2fSChristopher Di Bella int (&)(), int (S::*)() volatile noexcept>()); 25324dd2d2fSChristopher Di Bella static_assert( 25424dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (&)(), int (S::*)() const volatile>()); 25524dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 25624dd2d2fSChristopher Di Bella int (&)(), int (S::*)() const volatile noexcept>()); 25724dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (&)(), int (S::*)() &>()); 25824dd2d2fSChristopher Di Bella static_assert( 25924dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (&)(), int (S::*)() & noexcept>()); 26024dd2d2fSChristopher Di Bella static_assert( 26124dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (&)(), int (S::*)() const&>()); 26224dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (&)(), 26324dd2d2fSChristopher Di Bella int (S::*)() const & noexcept>()); 26424dd2d2fSChristopher Di Bella static_assert( 26524dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (&)(), int (S::*)() volatile&>()); 26624dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (&)(), int (S::*)() volatile & 26724dd2d2fSChristopher Di Bella noexcept>()); 26824dd2d2fSChristopher Di Bella static_assert( 26924dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (&)(), int (S::*)() const volatile&>()); 27024dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 27124dd2d2fSChristopher Di Bella int (&)(), int (S::*)() const volatile & noexcept>()); 27224dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (&)(), int (S::*)() &&>()); 27324dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (&)(), 27424dd2d2fSChristopher Di Bella int (S::*)() && noexcept > ()); 27524dd2d2fSChristopher Di Bella static_assert( 27624dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (&)(), int (S::*)() const&&>()); 27724dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (&)(), 27824dd2d2fSChristopher Di Bella int (S::*)() const&& noexcept > ()); 27924dd2d2fSChristopher Di Bella static_assert( 28024dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (&)(), int (S::*)() volatile&&>()); 28124dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (&)(), 28224dd2d2fSChristopher Di Bella int (S::*)() volatile&& noexcept > ()); 28324dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (&)(), 28424dd2d2fSChristopher Di Bella int (S::*)() const volatile&&>()); 28524dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (&)(), 28624dd2d2fSChristopher Di Bella int (S::*)() const volatile&& noexcept > ()); 28724dd2d2fSChristopher Di Bella 28824dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<int (S::*)(), int (S::*)()>()); 28924dd2d2fSChristopher Di Bella static_assert( 29024dd2d2fSChristopher Di Bella check_equality_comparable_with<int (S::*)(), int (S::*)() noexcept>()); 29124dd2d2fSChristopher Di Bella static_assert( 29224dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (S::*)(), int (S::*)() const>()); 29324dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)(), 29424dd2d2fSChristopher Di Bella int (S::*)() const noexcept>()); 29524dd2d2fSChristopher Di Bella static_assert( 29624dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (S::*)(), int (S::*)() volatile>()); 29724dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 29824dd2d2fSChristopher Di Bella int (S::*)(), int (S::*)() volatile noexcept>()); 29924dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)(), 30024dd2d2fSChristopher Di Bella int (S::*)() const volatile>()); 30124dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 30224dd2d2fSChristopher Di Bella int (S::*)(), int (S::*)() const volatile noexcept>()); 30324dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)(), int (S::*)() &>()); 30424dd2d2fSChristopher Di Bella static_assert( 30524dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (S::*)(), int (S::*)() & noexcept>()); 30624dd2d2fSChristopher Di Bella static_assert( 30724dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (S::*)(), int (S::*)() const&>()); 30824dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)(), 30924dd2d2fSChristopher Di Bella int (S::*)() const & noexcept>()); 31024dd2d2fSChristopher Di Bella static_assert( 31124dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (S::*)(), int (S::*)() volatile&>()); 31224dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 31324dd2d2fSChristopher Di Bella int (S::*)(), int (S::*)() volatile & noexcept>()); 31424dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)(), 31524dd2d2fSChristopher Di Bella int (S::*)() const volatile&>()); 31624dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 31724dd2d2fSChristopher Di Bella int (S::*)(), int (S::*)() const volatile & noexcept>()); 31824dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)(), int (S::*)() &&>()); 31924dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)(), 32024dd2d2fSChristopher Di Bella int (S::*)() && noexcept > ()); 32124dd2d2fSChristopher Di Bella static_assert( 32224dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (S::*)(), int (S::*)() const&&>()); 32324dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)(), 32424dd2d2fSChristopher Di Bella int (S::*)() const&& noexcept > ()); 32524dd2d2fSChristopher Di Bella static_assert( 32624dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (S::*)(), int (S::*)() volatile&&>()); 32724dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)(), 32824dd2d2fSChristopher Di Bella int (S::*)() volatile&& noexcept > ()); 32924dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)(), 33024dd2d2fSChristopher Di Bella int (S::*)() const volatile&&>()); 33124dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)(), 33224dd2d2fSChristopher Di Bella int (S::*)() const volatile&& noexcept > ()); 33324dd2d2fSChristopher Di Bella 33424dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<int (S::*)() noexcept, 33524dd2d2fSChristopher Di Bella int (S::*)() noexcept>()); 33624dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() noexcept, 33724dd2d2fSChristopher Di Bella int (S::*)() const>()); 33824dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() noexcept, 33924dd2d2fSChristopher Di Bella int (S::*)() const noexcept>()); 34024dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() noexcept, 34124dd2d2fSChristopher Di Bella int (S::*)() volatile>()); 34224dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 34324dd2d2fSChristopher Di Bella int (S::*)() noexcept, int (S::*)() volatile noexcept>()); 34424dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() noexcept, 34524dd2d2fSChristopher Di Bella int (S::*)() const volatile>()); 34624dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 34724dd2d2fSChristopher Di Bella int (S::*)() noexcept, int (S::*)() const volatile noexcept>()); 34824dd2d2fSChristopher Di Bella static_assert( 34924dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (S::*)() noexcept, int (S::*)() &>()); 35024dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() noexcept, 35124dd2d2fSChristopher Di Bella int (S::*)() & noexcept>()); 35224dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() noexcept, 35324dd2d2fSChristopher Di Bella int (S::*)() const&>()); 35424dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() noexcept, 35524dd2d2fSChristopher Di Bella int (S::*)() const & noexcept>()); 35624dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() noexcept, 35724dd2d2fSChristopher Di Bella int (S::*)() volatile&>()); 35824dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 35924dd2d2fSChristopher Di Bella int (S::*)() noexcept, int (S::*)() volatile & noexcept>()); 36024dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() noexcept, 36124dd2d2fSChristopher Di Bella int (S::*)() const volatile&>()); 36224dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 36324dd2d2fSChristopher Di Bella int (S::*)() noexcept, int (S::*)() const volatile & noexcept>()); 36424dd2d2fSChristopher Di Bella static_assert( 36524dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (S::*)() noexcept, int (S::*)() &&>()); 36624dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() noexcept, 36724dd2d2fSChristopher Di Bella int (S::*)() && noexcept > ()); 36824dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() noexcept, 36924dd2d2fSChristopher Di Bella int (S::*)() const&&>()); 37024dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() noexcept, 37124dd2d2fSChristopher Di Bella int (S::*)() const&& noexcept > ()); 37224dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() noexcept, 37324dd2d2fSChristopher Di Bella int (S::*)() volatile&&>()); 37424dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() noexcept, 37524dd2d2fSChristopher Di Bella int (S::*)() volatile&& noexcept > ()); 37624dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() noexcept, 37724dd2d2fSChristopher Di Bella int (S::*)() const volatile&&>()); 37824dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() noexcept, 37924dd2d2fSChristopher Di Bella int (S::*)() const volatile&& noexcept > ()); 38024dd2d2fSChristopher Di Bella 38124dd2d2fSChristopher Di Bella static_assert( 38224dd2d2fSChristopher Di Bella check_equality_comparable_with<int (S::*)() const, int (S::*)() const>()); 38324dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<int (S::*)() const, 38424dd2d2fSChristopher Di Bella int (S::*)() const noexcept>()); 38524dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const, 38624dd2d2fSChristopher Di Bella int (S::*)() volatile>()); 38724dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 38824dd2d2fSChristopher Di Bella int (S::*)() const, int (S::*)() volatile noexcept>()); 38924dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const, 39024dd2d2fSChristopher Di Bella int (S::*)() const volatile>()); 39124dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 39224dd2d2fSChristopher Di Bella int (S::*)() const, int (S::*)() const volatile noexcept>()); 39324dd2d2fSChristopher Di Bella static_assert( 39424dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (S::*)() const, int (S::*)() &>()); 39524dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const, 39624dd2d2fSChristopher Di Bella int (S::*)() & noexcept>()); 39724dd2d2fSChristopher Di Bella static_assert( 39824dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (S::*)() const, int (S::*)() const&>()); 39924dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const, 40024dd2d2fSChristopher Di Bella int (S::*)() const & noexcept>()); 40124dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const, 40224dd2d2fSChristopher Di Bella int (S::*)() volatile&>()); 40324dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 40424dd2d2fSChristopher Di Bella int (S::*)() const, int (S::*)() volatile & noexcept>()); 40524dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const, 40624dd2d2fSChristopher Di Bella int (S::*)() const volatile&>()); 40724dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 40824dd2d2fSChristopher Di Bella int (S::*)() const, int (S::*)() const volatile & noexcept>()); 40924dd2d2fSChristopher Di Bella static_assert( 41024dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (S::*)() const, int (S::*)() &&>()); 41124dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() const, 41224dd2d2fSChristopher Di Bella int (S::*)() && noexcept > ()); 41324dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const, 41424dd2d2fSChristopher Di Bella int (S::*)() const&&>()); 41524dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() const, 41624dd2d2fSChristopher Di Bella int (S::*)() const&& noexcept > ()); 41724dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const, 41824dd2d2fSChristopher Di Bella int (S::*)() volatile&&>()); 41924dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() const, 42024dd2d2fSChristopher Di Bella int (S::*)() volatile&& noexcept > ()); 42124dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const, 42224dd2d2fSChristopher Di Bella int (S::*)() const volatile&&>()); 42324dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() const, 42424dd2d2fSChristopher Di Bella int (S::*)() const volatile&& noexcept > ()); 42524dd2d2fSChristopher Di Bella 42624dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<int (S::*)() const noexcept, 42724dd2d2fSChristopher Di Bella int (S::*)() const noexcept>()); 42824dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const noexcept, 42924dd2d2fSChristopher Di Bella int (S::*)() volatile>()); 43024dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 43124dd2d2fSChristopher Di Bella int (S::*)() const noexcept, int (S::*)() volatile noexcept>()); 43224dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const noexcept, 43324dd2d2fSChristopher Di Bella int (S::*)() const volatile>()); 43424dd2d2fSChristopher Di Bella static_assert( 43524dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (S::*)() const noexcept, 43624dd2d2fSChristopher Di Bella int (S::*)() const volatile noexcept>()); 43724dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const noexcept, 43824dd2d2fSChristopher Di Bella int (S::*)() &>()); 43924dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const noexcept, 44024dd2d2fSChristopher Di Bella int (S::*)() & noexcept>()); 44124dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const noexcept, 44224dd2d2fSChristopher Di Bella int (S::*)() const&>()); 44324dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const noexcept, 44424dd2d2fSChristopher Di Bella int (S::*)() const & noexcept>()); 44524dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const noexcept, 44624dd2d2fSChristopher Di Bella int (S::*)() volatile&>()); 44724dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 44824dd2d2fSChristopher Di Bella int (S::*)() const noexcept, int (S::*)() volatile & noexcept>()); 44924dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const noexcept, 45024dd2d2fSChristopher Di Bella int (S::*)() const volatile&>()); 45124dd2d2fSChristopher Di Bella static_assert( 45224dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (S::*)() const noexcept, 45324dd2d2fSChristopher Di Bella int (S::*)() const volatile & noexcept>()); 45424dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const noexcept, 45524dd2d2fSChristopher Di Bella int (S::*)() &&>()); 45624dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() const noexcept, 45724dd2d2fSChristopher Di Bella int (S::*)() && noexcept > ()); 45824dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const noexcept, 45924dd2d2fSChristopher Di Bella int (S::*)() const&&>()); 46024dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() const noexcept, 46124dd2d2fSChristopher Di Bella int (S::*)() const&& noexcept > ()); 46224dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const noexcept, 46324dd2d2fSChristopher Di Bella int (S::*)() volatile&&>()); 46424dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() const noexcept, 46524dd2d2fSChristopher Di Bella int (S::*)() volatile&& noexcept > ()); 46624dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const noexcept, 46724dd2d2fSChristopher Di Bella int (S::*)() const volatile&&>()); 46824dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() const noexcept, 46924dd2d2fSChristopher Di Bella int (S::*)() const volatile&& noexcept > ()); 47024dd2d2fSChristopher Di Bella 47124dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<int (S::*)() volatile, 47224dd2d2fSChristopher Di Bella int (S::*)() volatile>()); 47324dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<int (S::*)() volatile, 47424dd2d2fSChristopher Di Bella int (S::*)() volatile noexcept>()); 47524dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() volatile, 47624dd2d2fSChristopher Di Bella int (S::*)() const volatile>()); 47724dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 47824dd2d2fSChristopher Di Bella int (S::*)() volatile, int (S::*)() const volatile noexcept>()); 47924dd2d2fSChristopher Di Bella static_assert( 48024dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (S::*)() volatile, int (S::*)() &>()); 48124dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() volatile, 48224dd2d2fSChristopher Di Bella int (S::*)() & noexcept>()); 48324dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() volatile, 48424dd2d2fSChristopher Di Bella int (S::*)() const&>()); 48524dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() volatile, 48624dd2d2fSChristopher Di Bella int (S::*)() const & noexcept>()); 48724dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() volatile, 48824dd2d2fSChristopher Di Bella int (S::*)() volatile&>()); 48924dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 49024dd2d2fSChristopher Di Bella int (S::*)() volatile, int (S::*)() volatile & noexcept>()); 49124dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() volatile, 49224dd2d2fSChristopher Di Bella int (S::*)() const volatile&>()); 49324dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 49424dd2d2fSChristopher Di Bella int (S::*)() volatile, int (S::*)() const volatile & noexcept>()); 49524dd2d2fSChristopher Di Bella static_assert( 49624dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (S::*)() volatile, int (S::*)() &&>()); 49724dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() volatile, 49824dd2d2fSChristopher Di Bella int (S::*)() && noexcept > ()); 49924dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() volatile, 50024dd2d2fSChristopher Di Bella int (S::*)() const&&>()); 50124dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() volatile, 50224dd2d2fSChristopher Di Bella int (S::*)() const&& noexcept > ()); 50324dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() volatile, 50424dd2d2fSChristopher Di Bella int (S::*)() volatile&&>()); 50524dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() volatile, 50624dd2d2fSChristopher Di Bella int (S::*)() volatile&& noexcept > ()); 50724dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() volatile, 50824dd2d2fSChristopher Di Bella int (S::*)() const volatile&&>()); 50924dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() volatile, 51024dd2d2fSChristopher Di Bella int (S::*)() const volatile&& noexcept > ()); 51124dd2d2fSChristopher Di Bella 51224dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<int (S::*)() volatile noexcept, 51324dd2d2fSChristopher Di Bella int (S::*)() volatile noexcept>()); 51424dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() volatile noexcept, 51524dd2d2fSChristopher Di Bella int (S::*)() const volatile>()); 51624dd2d2fSChristopher Di Bella static_assert( 51724dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (S::*)() volatile noexcept, 51824dd2d2fSChristopher Di Bella int (S::*)() const volatile noexcept>()); 51924dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() volatile noexcept, 52024dd2d2fSChristopher Di Bella int (S::*)() &>()); 52124dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() volatile noexcept, 52224dd2d2fSChristopher Di Bella int (S::*)() & noexcept>()); 52324dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() volatile noexcept, 52424dd2d2fSChristopher Di Bella int (S::*)() const&>()); 52524dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() volatile noexcept, 52624dd2d2fSChristopher Di Bella int (S::*)() const & noexcept>()); 52724dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() volatile noexcept, 52824dd2d2fSChristopher Di Bella int (S::*)() volatile&>()); 52924dd2d2fSChristopher Di Bella static_assert( 53024dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (S::*)() volatile noexcept, 53124dd2d2fSChristopher Di Bella int (S::*)() volatile & noexcept>()); 53224dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() volatile noexcept, 53324dd2d2fSChristopher Di Bella int (S::*)() const volatile&>()); 53424dd2d2fSChristopher Di Bella static_assert( 53524dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (S::*)() volatile noexcept, 53624dd2d2fSChristopher Di Bella int (S::*)() const volatile & noexcept>()); 53724dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() volatile noexcept, 53824dd2d2fSChristopher Di Bella int (S::*)() &&>()); 53924dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() volatile noexcept, 54024dd2d2fSChristopher Di Bella int (S::*)() && noexcept > ()); 54124dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() volatile noexcept, 54224dd2d2fSChristopher Di Bella int (S::*)() const&&>()); 54324dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() volatile noexcept, 54424dd2d2fSChristopher Di Bella int (S::*)() const&& noexcept > ()); 54524dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() volatile noexcept, 54624dd2d2fSChristopher Di Bella int (S::*)() volatile&&>()); 54724dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() volatile noexcept, 54824dd2d2fSChristopher Di Bella int (S::*)() volatile&& noexcept > ()); 54924dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() volatile noexcept, 55024dd2d2fSChristopher Di Bella int (S::*)() const volatile&&>()); 55124dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() volatile noexcept, 55224dd2d2fSChristopher Di Bella int (S::*)() const volatile&& noexcept > ()); 55324dd2d2fSChristopher Di Bella 55424dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<int (S::*)() const volatile, 55524dd2d2fSChristopher Di Bella int (S::*)() const volatile>()); 55624dd2d2fSChristopher Di Bella static_assert( 55724dd2d2fSChristopher Di Bella check_equality_comparable_with<int (S::*)() const volatile, 55824dd2d2fSChristopher Di Bella int (S::*)() const volatile noexcept>()); 55924dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const volatile, 56024dd2d2fSChristopher Di Bella int (S::*)() &>()); 56124dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const volatile, 56224dd2d2fSChristopher Di Bella int (S::*)() & noexcept>()); 56324dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const volatile, 56424dd2d2fSChristopher Di Bella int (S::*)() const&>()); 56524dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const volatile, 56624dd2d2fSChristopher Di Bella int (S::*)() const & noexcept>()); 56724dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const volatile, 56824dd2d2fSChristopher Di Bella int (S::*)() volatile&>()); 56924dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 57024dd2d2fSChristopher Di Bella int (S::*)() const volatile, int (S::*)() volatile & noexcept>()); 57124dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const volatile, 57224dd2d2fSChristopher Di Bella int (S::*)() const volatile&>()); 57324dd2d2fSChristopher Di Bella static_assert( 57424dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (S::*)() const volatile, 57524dd2d2fSChristopher Di Bella int (S::*)() const volatile & noexcept>()); 57624dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const volatile, 57724dd2d2fSChristopher Di Bella int (S::*)() &&>()); 57824dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() const volatile, 57924dd2d2fSChristopher Di Bella int (S::*)() && noexcept > ()); 58024dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const volatile, 58124dd2d2fSChristopher Di Bella int (S::*)() const&&>()); 58224dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() const volatile, 58324dd2d2fSChristopher Di Bella int (S::*)() const&& noexcept > ()); 58424dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const volatile, 58524dd2d2fSChristopher Di Bella int (S::*)() volatile&&>()); 58624dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() const volatile, 58724dd2d2fSChristopher Di Bella int (S::*)() volatile&& noexcept > ()); 58824dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const volatile, 58924dd2d2fSChristopher Di Bella int (S::*)() const volatile&&>()); 59024dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() const volatile, 59124dd2d2fSChristopher Di Bella int (S::*)() const volatile&& noexcept > ()); 59224dd2d2fSChristopher Di Bella 59324dd2d2fSChristopher Di Bella static_assert( 59424dd2d2fSChristopher Di Bella check_equality_comparable_with<int (S::*)() const volatile noexcept, 59524dd2d2fSChristopher Di Bella int (S::*)() const volatile noexcept>()); 59624dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 59724dd2d2fSChristopher Di Bella int (S::*)() const volatile noexcept, int (S::*)() &>()); 59824dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 59924dd2d2fSChristopher Di Bella int (S::*)() const volatile noexcept, int (S::*)() & noexcept>()); 60024dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 60124dd2d2fSChristopher Di Bella int (S::*)() const volatile noexcept, int (S::*)() const&>()); 60224dd2d2fSChristopher Di Bella static_assert( 60324dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (S::*)() const volatile noexcept, 60424dd2d2fSChristopher Di Bella int (S::*)() const & noexcept>()); 60524dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 60624dd2d2fSChristopher Di Bella int (S::*)() const volatile noexcept, int (S::*)() volatile&>()); 60724dd2d2fSChristopher Di Bella static_assert( 60824dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (S::*)() const volatile noexcept, 60924dd2d2fSChristopher Di Bella int (S::*)() volatile & noexcept>()); 61024dd2d2fSChristopher Di Bella static_assert( 61124dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (S::*)() const volatile noexcept, 61224dd2d2fSChristopher Di Bella int (S::*)() const volatile&>()); 61324dd2d2fSChristopher Di Bella static_assert( 61424dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (S::*)() const volatile noexcept, 61524dd2d2fSChristopher Di Bella int (S::*)() const volatile & noexcept>()); 61624dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 61724dd2d2fSChristopher Di Bella int (S::*)() const volatile noexcept, int (S::*)() &&>()); 61824dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() 61924dd2d2fSChristopher Di Bella const volatile noexcept, 62024dd2d2fSChristopher Di Bella int (S::*)() && noexcept > ()); 62124dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 62224dd2d2fSChristopher Di Bella int (S::*)() const volatile noexcept, int (S::*)() const&&>()); 62324dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() 62424dd2d2fSChristopher Di Bella const volatile noexcept, 62524dd2d2fSChristopher Di Bella int (S::*)() const&& noexcept > ()); 62624dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 62724dd2d2fSChristopher Di Bella int (S::*)() const volatile noexcept, int (S::*)() volatile&&>()); 62824dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() 62924dd2d2fSChristopher Di Bella const volatile noexcept, 63024dd2d2fSChristopher Di Bella int (S::*)() volatile&& noexcept > ()); 63124dd2d2fSChristopher Di Bella static_assert( 63224dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (S::*)() const volatile noexcept, 63324dd2d2fSChristopher Di Bella int (S::*)() const volatile&&>()); 63424dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() 63524dd2d2fSChristopher Di Bella const volatile noexcept, 63624dd2d2fSChristopher Di Bella int (S::*)() const volatile&& noexcept > ()); 63724dd2d2fSChristopher Di Bella 63824dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<int (S::*)() &, int (S::*)() &>()); 63924dd2d2fSChristopher Di Bella static_assert( 64024dd2d2fSChristopher Di Bella check_equality_comparable_with<int (S::*)() &, int (S::*)() & noexcept>()); 64124dd2d2fSChristopher Di Bella static_assert( 64224dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (S::*)() &, int (S::*)() const&>()); 64324dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() &, 64424dd2d2fSChristopher Di Bella int (S::*)() const & noexcept>()); 64524dd2d2fSChristopher Di Bella static_assert( 64624dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (S::*)() &, int (S::*)() volatile&>()); 64724dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 64824dd2d2fSChristopher Di Bella int (S::*)() &, int (S::*)() volatile & noexcept>()); 64924dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() &, 65024dd2d2fSChristopher Di Bella int (S::*)() const volatile&>()); 65124dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 65224dd2d2fSChristopher Di Bella int (S::*)() &, int (S::*)() const volatile & noexcept>()); 65324dd2d2fSChristopher Di Bella static_assert( 65424dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (S::*)() &, int (S::*)() &&>()); 65524dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() &, 65624dd2d2fSChristopher Di Bella int (S::*)() && noexcept > ()); 65724dd2d2fSChristopher Di Bella static_assert( 65824dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (S::*)() &, int (S::*)() const&&>()); 65924dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() &, 66024dd2d2fSChristopher Di Bella int (S::*)() const&& noexcept > ()); 66124dd2d2fSChristopher Di Bella static_assert( 66224dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (S::*)() &, int (S::*)() volatile&&>()); 66324dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() &, 66424dd2d2fSChristopher Di Bella int (S::*)() volatile&& noexcept > ()); 66524dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() &, 66624dd2d2fSChristopher Di Bella int (S::*)() const volatile&&>()); 66724dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() &, 66824dd2d2fSChristopher Di Bella int (S::*)() const volatile&& noexcept > ()); 66924dd2d2fSChristopher Di Bella 67024dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<int (S::*)() & noexcept, 67124dd2d2fSChristopher Di Bella int (S::*)() & noexcept>()); 67224dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() & noexcept, 67324dd2d2fSChristopher Di Bella int (S::*)() const&>()); 67424dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() & noexcept, 67524dd2d2fSChristopher Di Bella int (S::*)() const & noexcept>()); 67624dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() & noexcept, 67724dd2d2fSChristopher Di Bella int (S::*)() volatile&>()); 67824dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 67924dd2d2fSChristopher Di Bella int (S::*)() & noexcept, int (S::*)() volatile & noexcept>()); 68024dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() & noexcept, 68124dd2d2fSChristopher Di Bella int (S::*)() const volatile&>()); 68224dd2d2fSChristopher Di Bella static_assert( 68324dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (S::*)() & noexcept, 68424dd2d2fSChristopher Di Bella int (S::*)() const volatile & noexcept>()); 68524dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() & noexcept, 68624dd2d2fSChristopher Di Bella int (S::*)() &&>()); 68724dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() & noexcept, 68824dd2d2fSChristopher Di Bella int (S::*)() && noexcept > ()); 68924dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() & noexcept, 69024dd2d2fSChristopher Di Bella int (S::*)() const&&>()); 69124dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() & noexcept, 69224dd2d2fSChristopher Di Bella int (S::*)() const&& noexcept > ()); 69324dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() & noexcept, 69424dd2d2fSChristopher Di Bella int (S::*)() volatile&&>()); 69524dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() & noexcept, 69624dd2d2fSChristopher Di Bella int (S::*)() volatile&& noexcept > ()); 69724dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() & noexcept, 69824dd2d2fSChristopher Di Bella int (S::*)() const volatile&&>()); 69924dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() & noexcept, 70024dd2d2fSChristopher Di Bella int (S::*)() const volatile&& noexcept > ()); 70124dd2d2fSChristopher Di Bella 70224dd2d2fSChristopher Di Bella static_assert( 70324dd2d2fSChristopher Di Bella check_equality_comparable_with<int (S::*)() const&, int (S::*)() const&>()); 70424dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<int (S::*)() const&, 70524dd2d2fSChristopher Di Bella int (S::*)() const & noexcept>()); 70624dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const&, 70724dd2d2fSChristopher Di Bella int (S::*)() volatile&>()); 70824dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 70924dd2d2fSChristopher Di Bella int (S::*)() const&, int (S::*)() volatile & noexcept>()); 71024dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const&, 71124dd2d2fSChristopher Di Bella int (S::*)() const volatile&>()); 71224dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 71324dd2d2fSChristopher Di Bella int (S::*)() const&, int (S::*)() const volatile & noexcept>()); 71424dd2d2fSChristopher Di Bella static_assert( 71524dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (S::*)() const&, int (S::*)() &&>()); 71624dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() const&, 71724dd2d2fSChristopher Di Bella int (S::*)() && noexcept > ()); 71824dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const&, 71924dd2d2fSChristopher Di Bella int (S::*)() const&&>()); 72024dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() const&, 72124dd2d2fSChristopher Di Bella int (S::*)() const&& noexcept > ()); 72224dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const&, 72324dd2d2fSChristopher Di Bella int (S::*)() volatile&&>()); 72424dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() const&, 72524dd2d2fSChristopher Di Bella int (S::*)() volatile&& noexcept > ()); 72624dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const&, 72724dd2d2fSChristopher Di Bella int (S::*)() const volatile&&>()); 72824dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() const&, 72924dd2d2fSChristopher Di Bella int (S::*)() const volatile&& noexcept > ()); 73024dd2d2fSChristopher Di Bella 73124dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<int (S::*)() const & noexcept, 73224dd2d2fSChristopher Di Bella int (S::*)() const & noexcept>()); 73324dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const & noexcept, 73424dd2d2fSChristopher Di Bella int (S::*)() volatile&>()); 73524dd2d2fSChristopher Di Bella static_assert( 73624dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (S::*)() const & noexcept, 73724dd2d2fSChristopher Di Bella int (S::*)() volatile & noexcept>()); 73824dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const & noexcept, 73924dd2d2fSChristopher Di Bella int (S::*)() const volatile&>()); 74024dd2d2fSChristopher Di Bella static_assert( 74124dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (S::*)() const & noexcept, 74224dd2d2fSChristopher Di Bella int (S::*)() const volatile & noexcept>()); 74324dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const & noexcept, 74424dd2d2fSChristopher Di Bella int (S::*)() &&>()); 74524dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() const& noexcept, 74624dd2d2fSChristopher Di Bella int (S::*)() && noexcept > ()); 74724dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const & noexcept, 74824dd2d2fSChristopher Di Bella int (S::*)() const&&>()); 74924dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() const& noexcept, 75024dd2d2fSChristopher Di Bella int (S::*)() const&& noexcept > ()); 75124dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const & noexcept, 75224dd2d2fSChristopher Di Bella int (S::*)() volatile&&>()); 75324dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() const& noexcept, 75424dd2d2fSChristopher Di Bella int (S::*)() volatile&& noexcept > ()); 75524dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const & noexcept, 75624dd2d2fSChristopher Di Bella int (S::*)() const volatile&&>()); 75724dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() const& noexcept, 75824dd2d2fSChristopher Di Bella int (S::*)() const volatile&& noexcept > ()); 75924dd2d2fSChristopher Di Bella 76024dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<int (S::*)() volatile&, 76124dd2d2fSChristopher Di Bella int (S::*)() volatile&>()); 76224dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with< 76324dd2d2fSChristopher Di Bella int (S::*)() volatile&, int (S::*)() volatile & noexcept>()); 76424dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() volatile&, 76524dd2d2fSChristopher Di Bella int (S::*)() const volatile&>()); 76624dd2d2fSChristopher Di Bella static_assert( 76724dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (S::*)() volatile&, 76824dd2d2fSChristopher Di Bella int (S::*)() const volatile & noexcept>()); 76924dd2d2fSChristopher Di Bella static_assert( 77024dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (S::*)() volatile&, int (S::*)() &&>()); 77124dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() volatile&, 77224dd2d2fSChristopher Di Bella int (S::*)() && noexcept > ()); 77324dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() volatile&, 77424dd2d2fSChristopher Di Bella int (S::*)() const&&>()); 77524dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() volatile&, 77624dd2d2fSChristopher Di Bella int (S::*)() const&& noexcept > ()); 77724dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() volatile&, 77824dd2d2fSChristopher Di Bella int (S::*)() volatile&&>()); 77924dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() volatile&, 78024dd2d2fSChristopher Di Bella int (S::*)() volatile&& noexcept > ()); 78124dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() volatile&, 78224dd2d2fSChristopher Di Bella int (S::*)() const volatile&&>()); 78324dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() volatile&, 78424dd2d2fSChristopher Di Bella int (S::*)() const volatile&& noexcept > ()); 78524dd2d2fSChristopher Di Bella 78624dd2d2fSChristopher Di Bella static_assert( 78724dd2d2fSChristopher Di Bella check_equality_comparable_with<int (S::*)() volatile & noexcept, 78824dd2d2fSChristopher Di Bella int (S::*)() volatile & noexcept>()); 78924dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() volatile & noexcept, 79024dd2d2fSChristopher Di Bella int (S::*)() const volatile&>()); 79124dd2d2fSChristopher Di Bella static_assert( 79224dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (S::*)() volatile & noexcept, 79324dd2d2fSChristopher Di Bella int (S::*)() const volatile & noexcept>()); 79424dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() volatile & noexcept, 79524dd2d2fSChristopher Di Bella int (S::*)() &&>()); 79624dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() volatile& noexcept, 79724dd2d2fSChristopher Di Bella int (S::*)() && noexcept > ()); 79824dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() volatile & noexcept, 79924dd2d2fSChristopher Di Bella int (S::*)() const&&>()); 80024dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() volatile& noexcept, 80124dd2d2fSChristopher Di Bella int (S::*)() const&& noexcept > ()); 80224dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() volatile & noexcept, 80324dd2d2fSChristopher Di Bella int (S::*)() volatile&&>()); 80424dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() volatile& noexcept, 80524dd2d2fSChristopher Di Bella int (S::*)() volatile&& noexcept > ()); 80624dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() volatile & noexcept, 80724dd2d2fSChristopher Di Bella int (S::*)() const volatile&&>()); 80824dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() volatile& noexcept, 80924dd2d2fSChristopher Di Bella int (S::*)() const volatile&& noexcept > ()); 81024dd2d2fSChristopher Di Bella 81124dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<int (S::*)() const volatile&, 81224dd2d2fSChristopher Di Bella int (S::*)() const volatile&>()); 81324dd2d2fSChristopher Di Bella static_assert( 81424dd2d2fSChristopher Di Bella check_equality_comparable_with<int (S::*)() const volatile&, 81524dd2d2fSChristopher Di Bella int (S::*)() const volatile & noexcept>()); 81624dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const volatile&, 81724dd2d2fSChristopher Di Bella int (S::*)() &&>()); 81824dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() const volatile&, 81924dd2d2fSChristopher Di Bella int (S::*)() && noexcept > ()); 82024dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const volatile&, 82124dd2d2fSChristopher Di Bella int (S::*)() const&&>()); 82224dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() const volatile&, 82324dd2d2fSChristopher Di Bella int (S::*)() const&& noexcept > ()); 82424dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const volatile&, 82524dd2d2fSChristopher Di Bella int (S::*)() volatile&&>()); 82624dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() const volatile&, 82724dd2d2fSChristopher Di Bella int (S::*)() volatile&& noexcept > ()); 82824dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const volatile&, 82924dd2d2fSChristopher Di Bella int (S::*)() const volatile&&>()); 83024dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() const volatile&, 83124dd2d2fSChristopher Di Bella int (S::*)() const volatile&& noexcept > ()); 83224dd2d2fSChristopher Di Bella 83324dd2d2fSChristopher Di Bella static_assert( 83424dd2d2fSChristopher Di Bella check_equality_comparable_with<int (S::*)() const volatile & noexcept, 83524dd2d2fSChristopher Di Bella int (S::*)() const volatile & noexcept>()); 83624dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 83724dd2d2fSChristopher Di Bella int (S::*)() const volatile & noexcept, int (S::*)() &&>()); 83824dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() 83924dd2d2fSChristopher Di Bella const volatile& noexcept, 84024dd2d2fSChristopher Di Bella int (S::*)() && noexcept > ()); 84124dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with< 84224dd2d2fSChristopher Di Bella int (S::*)() const volatile & noexcept, int (S::*)() const&&>()); 84324dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() 84424dd2d2fSChristopher Di Bella const volatile& noexcept, 84524dd2d2fSChristopher Di Bella int (S::*)() const&& noexcept > ()); 84624dd2d2fSChristopher Di Bella static_assert( 84724dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (S::*)() const volatile & noexcept, 84824dd2d2fSChristopher Di Bella int (S::*)() volatile&&>()); 84924dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() 85024dd2d2fSChristopher Di Bella const volatile& noexcept, 85124dd2d2fSChristopher Di Bella int (S::*)() volatile&& noexcept > ()); 85224dd2d2fSChristopher Di Bella static_assert( 85324dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (S::*)() const volatile & noexcept, 85424dd2d2fSChristopher Di Bella int (S::*)() const volatile&&>()); 85524dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() 85624dd2d2fSChristopher Di Bella const volatile& noexcept, 85724dd2d2fSChristopher Di Bella int (S::*)() const volatile&& noexcept > ()); 85824dd2d2fSChristopher Di Bella 85924dd2d2fSChristopher Di Bella static_assert( 86024dd2d2fSChristopher Di Bella check_equality_comparable_with<int (S::*)() &&, int (S::*)() &&>()); 86124dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<int (S::*)() &&, 86224dd2d2fSChristopher Di Bella int (S::*)() && noexcept>()); 86324dd2d2fSChristopher Di Bella static_assert( 86424dd2d2fSChristopher Di Bella !check_equality_comparable_with<int (S::*)() &&, int (S::*)() const&&>()); 86524dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() &&, 86624dd2d2fSChristopher Di Bella int (S::*)() const&& noexcept > ()); 86724dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() &&, 86824dd2d2fSChristopher Di Bella int (S::*)() volatile&&>()); 86924dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() &&, 87024dd2d2fSChristopher Di Bella int (S::*)() volatile&& noexcept > ()); 87124dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() &&, 87224dd2d2fSChristopher Di Bella int (S::*)() const volatile&&>()); 87324dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() &&, 87424dd2d2fSChristopher Di Bella int (S::*)() const volatile&& noexcept > ()); 87524dd2d2fSChristopher Di Bella 87624dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<int (S::*)() && noexcept, 87724dd2d2fSChristopher Di Bella int (S::*)() && noexcept>()); 87824dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() && noexcept, 87924dd2d2fSChristopher Di Bella int (S::*)() const&& > ()); 88024dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() && noexcept, 88124dd2d2fSChristopher Di Bella int (S::*)() const&& noexcept > ()); 88224dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() && noexcept, 88324dd2d2fSChristopher Di Bella int (S::*)() volatile&& > ()); 88424dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() && noexcept, 88524dd2d2fSChristopher Di Bella int (S::*)() volatile&& noexcept > ()); 88624dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() && noexcept, 88724dd2d2fSChristopher Di Bella int (S::*)() const volatile&& > ()); 88824dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() && noexcept, 88924dd2d2fSChristopher Di Bella int (S::*)() const volatile&& noexcept > ()); 89024dd2d2fSChristopher Di Bella 89124dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<int (S::*)() const&&, 89224dd2d2fSChristopher Di Bella int (S::*)() const&&>()); 89324dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<int (S::*)() const&&, 89424dd2d2fSChristopher Di Bella int (S::*)() const && noexcept>()); 89524dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const&&, 89624dd2d2fSChristopher Di Bella int (S::*)() volatile&&>()); 89724dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() const&&, 89824dd2d2fSChristopher Di Bella int (S::*)() volatile&& noexcept > ()); 89924dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() const&&, 90024dd2d2fSChristopher Di Bella int (S::*)() const volatile&&>()); 90124dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() const&&, 90224dd2d2fSChristopher Di Bella int (S::*)() const volatile&& noexcept > ()); 90324dd2d2fSChristopher Di Bella 90424dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<int (S::*)() const && noexcept, 90524dd2d2fSChristopher Di Bella int (S::*)() const && noexcept>()); 90624dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() const&& noexcept, 90724dd2d2fSChristopher Di Bella int (S::*)() volatile&& > ()); 90824dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() const&& noexcept, 90924dd2d2fSChristopher Di Bella int (S::*)() volatile&& noexcept > ()); 91024dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() const&& noexcept, 91124dd2d2fSChristopher Di Bella int (S::*)() const volatile&& > ()); 91224dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() const&& noexcept, 91324dd2d2fSChristopher Di Bella int (S::*)() const volatile&& noexcept > ()); 91424dd2d2fSChristopher Di Bella 91524dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<int (S::*)() volatile&&, 91624dd2d2fSChristopher Di Bella int (S::*)() volatile&&>()); 91724dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with< 91824dd2d2fSChristopher Di Bella int (S::*)() volatile&&, int (S::*)() volatile && noexcept>()); 91924dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<int (S::*)() volatile&&, 92024dd2d2fSChristopher Di Bella int (S::*)() const volatile&&>()); 92124dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < int (S::*)() volatile&&, 92224dd2d2fSChristopher Di Bella int (S::*)() const volatile&& noexcept > ()); 92324dd2d2fSChristopher Di Bella 92424dd2d2fSChristopher Di Bella static_assert( 92524dd2d2fSChristopher Di Bella check_equality_comparable_with<int (S::*)() volatile && noexcept, 92624dd2d2fSChristopher Di Bella int (S::*)() volatile && noexcept>()); 92724dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < 92824dd2d2fSChristopher Di Bella int (S::*)() volatile&& noexcept, 92924dd2d2fSChristopher Di Bella int (S::*)() const volatile&& > ()); 93024dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with < 93124dd2d2fSChristopher Di Bella int (S::*)() volatile&& noexcept, 93224dd2d2fSChristopher Di Bella int (S::*)() const volatile&& noexcept > ()); 93324dd2d2fSChristopher Di Bella 93424dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<int (S::*)() const volatile&&, 93524dd2d2fSChristopher Di Bella int (S::*)() const volatile&&>()); 93624dd2d2fSChristopher Di Bella static_assert( 93724dd2d2fSChristopher Di Bella check_equality_comparable_with<int (S::*)() const volatile&&, 93824dd2d2fSChristopher Di Bella int (S::*)() const volatile && noexcept>()); 93924dd2d2fSChristopher Di Bella static_assert( 94024dd2d2fSChristopher Di Bella check_equality_comparable_with<int (S::*)() const volatile && noexcept, 94124dd2d2fSChristopher Di Bella int (S::*)() const volatile && noexcept>()); 94224dd2d2fSChristopher Di Bella 94324dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<std::nullptr_t, int>()); 94424dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<std::nullptr_t, int*>()); 94524dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<std::nullptr_t, int[5]>()); 94624dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<std::nullptr_t, int (*)()>()); 94724dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<std::nullptr_t, int (&)()>()); 94824dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<std::nullptr_t, int (S::*)()>()); 94924dd2d2fSChristopher Di Bella static_assert( 95024dd2d2fSChristopher Di Bella check_equality_comparable_with<std::nullptr_t, int (S::*)() noexcept>()); 95124dd2d2fSChristopher Di Bella static_assert( 95224dd2d2fSChristopher Di Bella check_equality_comparable_with<std::nullptr_t, int (S::*)() const>()); 95324dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<std::nullptr_t, 95424dd2d2fSChristopher Di Bella int (S::*)() const noexcept>()); 95524dd2d2fSChristopher Di Bella static_assert( 95624dd2d2fSChristopher Di Bella check_equality_comparable_with<std::nullptr_t, int (S::*)() volatile>()); 95724dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<std::nullptr_t, 95824dd2d2fSChristopher Di Bella int (S::*)() volatile noexcept>()); 95924dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<std::nullptr_t, 96024dd2d2fSChristopher Di Bella int (S::*)() const volatile>()); 96124dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with< 96224dd2d2fSChristopher Di Bella std::nullptr_t, int (S::*)() const volatile noexcept>()); 96324dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<std::nullptr_t, int (S::*)() &>()); 96424dd2d2fSChristopher Di Bella static_assert( 96524dd2d2fSChristopher Di Bella check_equality_comparable_with<std::nullptr_t, int (S::*)() & noexcept>()); 96624dd2d2fSChristopher Di Bella static_assert( 96724dd2d2fSChristopher Di Bella check_equality_comparable_with<std::nullptr_t, int (S::*)() const&>()); 96824dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<std::nullptr_t, 96924dd2d2fSChristopher Di Bella int (S::*)() const & noexcept>()); 97024dd2d2fSChristopher Di Bella static_assert( 97124dd2d2fSChristopher Di Bella check_equality_comparable_with<std::nullptr_t, int (S::*)() volatile&>()); 97224dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with< 97324dd2d2fSChristopher Di Bella std::nullptr_t, int (S::*)() volatile & noexcept>()); 97424dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<std::nullptr_t, 97524dd2d2fSChristopher Di Bella int (S::*)() const volatile&>()); 97624dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with< 97724dd2d2fSChristopher Di Bella std::nullptr_t, int (S::*)() const volatile & noexcept>()); 97824dd2d2fSChristopher Di Bella static_assert( 97924dd2d2fSChristopher Di Bella check_equality_comparable_with<std::nullptr_t, int (S::*)() &&>()); 98024dd2d2fSChristopher Di Bella static_assert( 98124dd2d2fSChristopher Di Bella check_equality_comparable_with<std::nullptr_t, int (S::*)() && noexcept>()); 98224dd2d2fSChristopher Di Bella static_assert( 98324dd2d2fSChristopher Di Bella check_equality_comparable_with<std::nullptr_t, int (S::*)() const&&>()); 98424dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<std::nullptr_t, 98524dd2d2fSChristopher Di Bella int (S::*)() const && noexcept>()); 98624dd2d2fSChristopher Di Bella static_assert( 98724dd2d2fSChristopher Di Bella check_equality_comparable_with<std::nullptr_t, int (S::*)() volatile&&>()); 98824dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with< 98924dd2d2fSChristopher Di Bella std::nullptr_t, int (S::*)() volatile && noexcept>()); 99024dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<std::nullptr_t, 99124dd2d2fSChristopher Di Bella int (S::*)() const volatile&&>()); 99224dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with< 99324dd2d2fSChristopher Di Bella std::nullptr_t, int (S::*)() const volatile && noexcept>()); 99424dd2d2fSChristopher Di Bella 99524dd2d2fSChristopher Di Bella static_assert(!std::equality_comparable_with<void, int>); 99624dd2d2fSChristopher Di Bella static_assert(!std::equality_comparable_with<void, int*>); 99724dd2d2fSChristopher Di Bella static_assert(!std::equality_comparable_with<void, std::nullptr_t>); 99824dd2d2fSChristopher Di Bella static_assert(!std::equality_comparable_with<void, int[5]>); 99924dd2d2fSChristopher Di Bella static_assert(!std::equality_comparable_with<void, int (*)()>); 100024dd2d2fSChristopher Di Bella static_assert(!std::equality_comparable_with<void, int (&)()>); 100124dd2d2fSChristopher Di Bella static_assert(!std::equality_comparable_with<void, int S::*>); 100224dd2d2fSChristopher Di Bella static_assert(!std::equality_comparable_with<void, int (S::*)()>); 100324dd2d2fSChristopher Di Bella static_assert(!std::equality_comparable_with<void, int (S::*)() noexcept>); 100424dd2d2fSChristopher Di Bella static_assert(!std::equality_comparable_with<void, int (S::*)() const>); 100524dd2d2fSChristopher Di Bella static_assert( 100624dd2d2fSChristopher Di Bella !std::equality_comparable_with<void, int (S::*)() const noexcept>); 100724dd2d2fSChristopher Di Bella static_assert(!std::equality_comparable_with<void, int (S::*)() volatile>); 100824dd2d2fSChristopher Di Bella static_assert( 100924dd2d2fSChristopher Di Bella !std::equality_comparable_with<void, int (S::*)() volatile noexcept>); 101024dd2d2fSChristopher Di Bella static_assert( 101124dd2d2fSChristopher Di Bella !std::equality_comparable_with<void, int (S::*)() const volatile>); 101224dd2d2fSChristopher Di Bella static_assert( 101324dd2d2fSChristopher Di Bella !std::equality_comparable_with<void, int (S::*)() const volatile noexcept>); 101424dd2d2fSChristopher Di Bella static_assert(!std::equality_comparable_with<void, int (S::*)() &>); 101524dd2d2fSChristopher Di Bella static_assert(!std::equality_comparable_with<void, int (S::*)() & noexcept>); 101624dd2d2fSChristopher Di Bella static_assert(!std::equality_comparable_with<void, int (S::*)() const&>); 101724dd2d2fSChristopher Di Bella static_assert( 101824dd2d2fSChristopher Di Bella !std::equality_comparable_with<void, int (S::*)() const & noexcept>); 101924dd2d2fSChristopher Di Bella static_assert(!std::equality_comparable_with<void, int (S::*)() volatile&>); 102024dd2d2fSChristopher Di Bella static_assert( 102124dd2d2fSChristopher Di Bella !std::equality_comparable_with<void, int (S::*)() volatile & noexcept>); 102224dd2d2fSChristopher Di Bella static_assert( 102324dd2d2fSChristopher Di Bella !std::equality_comparable_with<void, int (S::*)() const volatile&>); 102424dd2d2fSChristopher Di Bella static_assert(!std::equality_comparable_with<void, int (S::*)() const volatile & 102524dd2d2fSChristopher Di Bella noexcept>); 102624dd2d2fSChristopher Di Bella static_assert(!std::equality_comparable_with<void, int (S::*)() &&>); 102724dd2d2fSChristopher Di Bella static_assert(!std::equality_comparable_with < void, 102824dd2d2fSChristopher Di Bella int (S::*)() && noexcept >); 102924dd2d2fSChristopher Di Bella static_assert(!std::equality_comparable_with<void, int (S::*)() const&&>); 103024dd2d2fSChristopher Di Bella static_assert(!std::equality_comparable_with < void, 103124dd2d2fSChristopher Di Bella int (S::*)() const&& noexcept >); 103224dd2d2fSChristopher Di Bella static_assert(!std::equality_comparable_with<void, int (S::*)() volatile&&>); 103324dd2d2fSChristopher Di Bella static_assert(!std::equality_comparable_with < void, 103424dd2d2fSChristopher Di Bella int (S::*)() volatile&& noexcept >); 103524dd2d2fSChristopher Di Bella static_assert( 103624dd2d2fSChristopher Di Bella !std::equality_comparable_with<void, int (S::*)() const volatile&&>); 103724dd2d2fSChristopher Di Bella static_assert(!std::equality_comparable_with < void, 103824dd2d2fSChristopher Di Bella int (S::*)() const volatile&& noexcept >); 103924dd2d2fSChristopher Di Bella } // namespace fundamentals 104024dd2d2fSChristopher Di Bella 104124dd2d2fSChristopher Di Bella namespace standard_types { 104224dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<std::array<int, 10>, 104324dd2d2fSChristopher Di Bella std::array<int, 10> >()); 104424dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<std::array<int, 10>, 104524dd2d2fSChristopher Di Bella std::array<double, 10> >()); 104624dd2d2fSChristopher Di Bella static_assert( 104724dd2d2fSChristopher Di Bella check_equality_comparable_with<std::deque<int>, std::deque<int> >()); 104824dd2d2fSChristopher Di Bella static_assert( 104924dd2d2fSChristopher Di Bella !check_equality_comparable_with<std::deque<int>, std::vector<int> >()); 105024dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<std::forward_list<int>, 105124dd2d2fSChristopher Di Bella std::forward_list<int> >()); 105224dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<std::forward_list<int>, 105324dd2d2fSChristopher Di Bella std::vector<int> >()); 105424dd2d2fSChristopher Di Bella static_assert( 105524dd2d2fSChristopher Di Bella check_equality_comparable_with<std::list<int>, std::list<int> >()); 105624dd2d2fSChristopher Di Bella static_assert( 105724dd2d2fSChristopher Di Bella !check_equality_comparable_with<std::list<int>, std::vector<int> >()); 105824dd2d2fSChristopher Di Bella 105984bb1459SMark de Wever #ifndef TEST_HAS_NO_THREADS 106024dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<std::lock_guard<std::mutex>, 106124dd2d2fSChristopher Di Bella std::lock_guard<std::mutex> >()); 106224dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<std::lock_guard<std::mutex>, 106324dd2d2fSChristopher Di Bella std::vector<int> >()); 106424dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<std::mutex, std::mutex>()); 106524dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<std::mutex, std::vector<int> >()); 106624dd2d2fSChristopher Di Bella #endif 106724dd2d2fSChristopher Di Bella 106824dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<std::map<int, void*>, 106924dd2d2fSChristopher Di Bella std::map<int, void*> >()); 107024dd2d2fSChristopher Di Bella static_assert( 107124dd2d2fSChristopher Di Bella !check_equality_comparable_with<std::map<int, void*>, std::vector<int> >()); 107224dd2d2fSChristopher Di Bella static_assert( 107324dd2d2fSChristopher Di Bella check_equality_comparable_with<std::optional<std::vector<int> >, 107424dd2d2fSChristopher Di Bella std::optional<std::vector<int> > >()); 107524dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<std::optional<std::vector<int> >, 107624dd2d2fSChristopher Di Bella std::vector<int> >()); 107724dd2d2fSChristopher Di Bella static_assert( 107824dd2d2fSChristopher Di Bella check_equality_comparable_with<std::vector<int>, std::vector<int> >()); 107924dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<std::vector<int>, int>()); 108024dd2d2fSChristopher Di Bella } // namespace standard_types 108124dd2d2fSChristopher Di Bella 108224dd2d2fSChristopher Di Bella namespace types_fit_for_purpose { 108324dd2d2fSChristopher Di Bella static_assert( 108424dd2d2fSChristopher Di Bella check_equality_comparable_with<cxx20_member_eq, cxx20_member_eq>()); 108524dd2d2fSChristopher Di Bella static_assert( 108624dd2d2fSChristopher Di Bella check_equality_comparable_with<cxx20_friend_eq, cxx20_friend_eq>()); 108724dd2d2fSChristopher Di Bella static_assert( 108824dd2d2fSChristopher Di Bella !check_equality_comparable_with<cxx20_member_eq, cxx20_friend_eq>()); 108924dd2d2fSChristopher Di Bella 109024dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<member_three_way_comparable, 109124dd2d2fSChristopher Di Bella member_three_way_comparable>()); 109224dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<friend_three_way_comparable, 109324dd2d2fSChristopher Di Bella friend_three_way_comparable>()); 109424dd2d2fSChristopher Di Bella static_assert(!check_equality_comparable_with<member_three_way_comparable, 109524dd2d2fSChristopher Di Bella friend_three_way_comparable>()); 109624dd2d2fSChristopher Di Bella 109724dd2d2fSChristopher Di Bella static_assert( 109824dd2d2fSChristopher Di Bella check_equality_comparable_with<explicit_operators, explicit_operators>()); 109924dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<equality_comparable_with_ec1, 110024dd2d2fSChristopher Di Bella equality_comparable_with_ec1>()); 11017959d590SChristopher Di Bella static_assert(check_equality_comparable_with<different_return_types, 11027959d590SChristopher Di Bella different_return_types>()); 110324dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<explicit_operators, 110424dd2d2fSChristopher Di Bella equality_comparable_with_ec1>()); 110524dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<explicit_operators, 11067959d590SChristopher Di Bella different_return_types>()); 110724dd2d2fSChristopher Di Bella 110824dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<one_way_eq, one_way_eq>()); 110924dd2d2fSChristopher Di Bella static_assert( 111024dd2d2fSChristopher Di Bella std::common_reference_with<one_way_eq const&, explicit_operators const&>); 111124dd2d2fSChristopher Di Bella static_assert( 111224dd2d2fSChristopher Di Bella !check_equality_comparable_with<one_way_eq, explicit_operators>()); 111324dd2d2fSChristopher Di Bella 111424dd2d2fSChristopher Di Bella static_assert(check_equality_comparable_with<one_way_ne, one_way_ne>()); 111524dd2d2fSChristopher Di Bella static_assert( 111624dd2d2fSChristopher Di Bella std::common_reference_with<one_way_ne const&, explicit_operators const&>); 111724dd2d2fSChristopher Di Bella static_assert( 111824dd2d2fSChristopher Di Bella !check_equality_comparable_with<one_way_ne, explicit_operators>()); 111924dd2d2fSChristopher Di Bella } // namespace types_fit_for_purpose 1120