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