| //===----------------------------------------------------------------------===// |
| // |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| // See https://llvm.org/LICENSE.txt for license information. |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| // |
| //===----------------------------------------------------------------------===// |
| |
| // UNSUPPORTED: c++03, c++11, c++14, c++17 |
| |
| // template<class T> |
| // concept totally_ordered_with; |
| |
| #include <concepts> |
| |
| #include <array> |
| #include <deque> |
| #include <forward_list> |
| #include <list> |
| #include <map> |
| #include <memory> |
| #include <optional> |
| #include <set> |
| #include <unordered_map> |
| #include <unordered_set> |
| #include <vector> |
| |
| #include "compare_types.h" |
| #include "test_macros.h" |
| |
| template <class T, class U> |
| constexpr bool check_totally_ordered_with() noexcept { |
| constexpr bool result = std::totally_ordered_with<T, U>; |
| static_assert(std::totally_ordered_with<U, T> == result); |
| static_assert(std::totally_ordered_with<T, U const> == result); |
| static_assert(std::totally_ordered_with<T const, U const> == result); |
| static_assert(std::totally_ordered_with<T, U const&> == result); |
| static_assert(std::totally_ordered_with<T const, U const&> == result); |
| static_assert(std::totally_ordered_with<T&, U const> == result); |
| static_assert(std::totally_ordered_with<T const&, U const> == result); |
| static_assert(std::totally_ordered_with<T&, U const&> == result); |
| static_assert(std::totally_ordered_with<T const&, U const&> == result); |
| static_assert(std::totally_ordered_with<T, U const&&> == result); |
| static_assert(std::totally_ordered_with<T const, U const&&> == result); |
| static_assert(std::totally_ordered_with<T&, U const&&> == result); |
| static_assert(std::totally_ordered_with<T const&, U const&&> == result); |
| static_assert(std::totally_ordered_with<T&&, U const> == result); |
| static_assert(std::totally_ordered_with<T const&&, U const> == result); |
| static_assert(std::totally_ordered_with<T&&, U const&> == result); |
| static_assert(std::totally_ordered_with<T const&&, U const&> == result); |
| static_assert(std::totally_ordered_with<T&&, U const&&> == result); |
| static_assert(std::totally_ordered_with<T const&&, U const&&> == result); |
| return result; |
| } |
| |
| namespace fundamentals { |
| static_assert(check_totally_ordered_with<int, int>()); |
| static_assert(check_totally_ordered_with<int, bool>()); |
| static_assert(check_totally_ordered_with<int, char>()); |
| static_assert(check_totally_ordered_with<int, wchar_t>()); |
| static_assert(check_totally_ordered_with<int, double>()); |
| static_assert(!check_totally_ordered_with<int, int*>()); |
| static_assert(!check_totally_ordered_with<int, int[5]>()); |
| static_assert(!check_totally_ordered_with<int, int (*)()>()); |
| static_assert(!check_totally_ordered_with<int, int (&)()>()); |
| |
| struct S {}; |
| static_assert(!check_totally_ordered_with<int, int S::*>()); |
| static_assert(!check_totally_ordered_with<int, int (S::*)()>()); |
| static_assert(!check_totally_ordered_with<int, int (S::*)() noexcept>()); |
| static_assert(!check_totally_ordered_with<int, int (S::*)() const>()); |
| static_assert(!check_totally_ordered_with<int, int (S::*)() const noexcept>()); |
| static_assert(!check_totally_ordered_with<int, int (S::*)() volatile>()); |
| static_assert( |
| !check_totally_ordered_with<int, int (S::*)() volatile noexcept>()); |
| static_assert(!check_totally_ordered_with<int, int (S::*)() const volatile>()); |
| static_assert( |
| !check_totally_ordered_with<int, int (S::*)() const volatile noexcept>()); |
| static_assert(!check_totally_ordered_with<int, int (S::*)() &>()); |
| static_assert(!check_totally_ordered_with<int, int (S::*)() & noexcept>()); |
| static_assert(!check_totally_ordered_with<int, int (S::*)() const&>()); |
| static_assert( |
| !check_totally_ordered_with<int, int (S::*)() const & noexcept>()); |
| static_assert(!check_totally_ordered_with<int, int (S::*)() volatile&>()); |
| static_assert( |
| !check_totally_ordered_with<int, int (S::*)() volatile & noexcept>()); |
| static_assert(!check_totally_ordered_with<int, int (S::*)() const volatile&>()); |
| static_assert( |
| !check_totally_ordered_with<int, int (S::*)() const volatile & noexcept>()); |
| static_assert(!check_totally_ordered_with<int, int (S::*)() &&>()); |
| static_assert(!check_totally_ordered_with < int, int (S::*)() && noexcept > ()); |
| static_assert(!check_totally_ordered_with<int, int (S::*)() const&&>()); |
| static_assert(!check_totally_ordered_with < int, |
| int (S::*)() const&& noexcept > ()); |
| static_assert(!check_totally_ordered_with<int, int (S::*)() volatile&&>()); |
| static_assert(!check_totally_ordered_with < int, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert( |
| !check_totally_ordered_with<int, int (S::*)() const volatile&&>()); |
| static_assert(!check_totally_ordered_with < int, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(check_totally_ordered_with<int*, int*>()); |
| static_assert(check_totally_ordered_with<int*, int[5]>()); |
| static_assert(!check_totally_ordered_with<int*, int (*)()>()); |
| static_assert(!check_totally_ordered_with<int*, int (&)()>()); |
| static_assert(!check_totally_ordered_with<int*, int (S::*)()>()); |
| static_assert(!check_totally_ordered_with<int*, int (S::*)() noexcept>()); |
| static_assert(!check_totally_ordered_with<int*, int (S::*)() const>()); |
| static_assert(!check_totally_ordered_with<int*, int (S::*)() const noexcept>()); |
| static_assert(!check_totally_ordered_with<int*, int (S::*)() volatile>()); |
| static_assert( |
| !check_totally_ordered_with<int*, int (S::*)() volatile noexcept>()); |
| static_assert(!check_totally_ordered_with<int*, int (S::*)() const volatile>()); |
| static_assert( |
| !check_totally_ordered_with<int*, int (S::*)() const volatile noexcept>()); |
| static_assert(!check_totally_ordered_with<int*, int (S::*)() &>()); |
| static_assert(!check_totally_ordered_with<int*, int (S::*)() & noexcept>()); |
| static_assert(!check_totally_ordered_with<int*, int (S::*)() const&>()); |
| static_assert( |
| !check_totally_ordered_with<int*, int (S::*)() const & noexcept>()); |
| static_assert(!check_totally_ordered_with<int*, int (S::*)() volatile&>()); |
| static_assert( |
| !check_totally_ordered_with<int*, int (S::*)() volatile & noexcept>()); |
| static_assert( |
| !check_totally_ordered_with<int*, int (S::*)() const volatile&>()); |
| static_assert(!check_totally_ordered_with<int*, int (S::*)() const volatile & |
| noexcept>()); |
| static_assert(!check_totally_ordered_with<int*, int (S::*)() &&>()); |
| static_assert(!check_totally_ordered_with < int*, |
| int (S::*)() && noexcept > ()); |
| static_assert(!check_totally_ordered_with<int*, int (S::*)() const&&>()); |
| static_assert(!check_totally_ordered_with < int*, |
| int (S::*)() const&& noexcept > ()); |
| static_assert(!check_totally_ordered_with<int*, int (S::*)() volatile&&>()); |
| static_assert(!check_totally_ordered_with < int*, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert( |
| !check_totally_ordered_with<int*, int (S::*)() const volatile&&>()); |
| static_assert(!check_totally_ordered_with < int*, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(check_totally_ordered_with<int[5], int[5]>()); |
| static_assert(!check_totally_ordered_with<int[5], int (*)()>()); |
| static_assert(!check_totally_ordered_with<int[5], int (&)()>()); |
| static_assert(!check_totally_ordered_with<int[5], int (S::*)()>()); |
| static_assert(!check_totally_ordered_with<int[5], int (S::*)() noexcept>()); |
| static_assert(!check_totally_ordered_with<int[5], int (S::*)() const>()); |
| static_assert( |
| !check_totally_ordered_with<int[5], int (S::*)() const noexcept>()); |
| static_assert(!check_totally_ordered_with<int[5], int (S::*)() volatile>()); |
| static_assert( |
| !check_totally_ordered_with<int[5], int (S::*)() volatile noexcept>()); |
| static_assert( |
| !check_totally_ordered_with<int[5], int (S::*)() const volatile>()); |
| static_assert(!check_totally_ordered_with< |
| int[5], int (S::*)() const volatile noexcept>()); |
| static_assert(!check_totally_ordered_with<int[5], int (S::*)() &>()); |
| static_assert(!check_totally_ordered_with<int[5], int (S::*)() & noexcept>()); |
| static_assert(!check_totally_ordered_with<int[5], int (S::*)() const&>()); |
| static_assert( |
| !check_totally_ordered_with<int[5], int (S::*)() const & noexcept>()); |
| static_assert(!check_totally_ordered_with<int[5], int (S::*)() volatile&>()); |
| static_assert( |
| !check_totally_ordered_with<int[5], int (S::*)() volatile & noexcept>()); |
| static_assert( |
| !check_totally_ordered_with<int[5], int (S::*)() const volatile&>()); |
| static_assert(!check_totally_ordered_with<int[5], int (S::*)() const volatile & |
| noexcept>()); |
| static_assert(!check_totally_ordered_with<int[5], int (S::*)() &&>()); |
| static_assert(!check_totally_ordered_with < int[5], |
| int (S::*)() && noexcept > ()); |
| static_assert(!check_totally_ordered_with<int[5], int (S::*)() const&&>()); |
| static_assert(!check_totally_ordered_with < int[5], |
| int (S::*)() const&& noexcept > ()); |
| static_assert(!check_totally_ordered_with<int[5], int (S::*)() volatile&&>()); |
| static_assert(!check_totally_ordered_with < int[5], |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert( |
| !check_totally_ordered_with<int[5], int (S::*)() const volatile&&>()); |
| static_assert(!check_totally_ordered_with < int[5], |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(check_totally_ordered_with<int (*)(), int (*)()>()); |
| static_assert(check_totally_ordered_with<int (*)(), int (&)()>()); |
| static_assert(!check_totally_ordered_with<int (*)(), int (S::*)()>()); |
| static_assert(!check_totally_ordered_with<int (*)(), int (S::*)() noexcept>()); |
| static_assert(!check_totally_ordered_with<int (*)(), int (S::*)() const>()); |
| static_assert( |
| !check_totally_ordered_with<int (*)(), int (S::*)() const noexcept>()); |
| static_assert(!check_totally_ordered_with<int (*)(), int (S::*)() volatile>()); |
| static_assert( |
| !check_totally_ordered_with<int (*)(), int (S::*)() volatile noexcept>()); |
| static_assert( |
| !check_totally_ordered_with<int (*)(), int (S::*)() const volatile>()); |
| static_assert(!check_totally_ordered_with< |
| int (*)(), int (S::*)() const volatile noexcept>()); |
| static_assert(!check_totally_ordered_with<int (*)(), int (S::*)() &>()); |
| static_assert( |
| !check_totally_ordered_with<int (*)(), int (S::*)() & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (*)(), int (S::*)() const&>()); |
| static_assert( |
| !check_totally_ordered_with<int (*)(), int (S::*)() const & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (*)(), int (S::*)() volatile&>()); |
| static_assert( |
| !check_totally_ordered_with<int (*)(), int (S::*)() volatile & noexcept>()); |
| static_assert( |
| !check_totally_ordered_with<int (*)(), int (S::*)() const volatile&>()); |
| static_assert(!check_totally_ordered_with< |
| int (*)(), int (S::*)() const volatile & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (*)(), int (S::*)() &&>()); |
| static_assert(!check_totally_ordered_with < int (*)(), |
| int (S::*)() && noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (*)(), int (S::*)() const&&>()); |
| static_assert(!check_totally_ordered_with < int (*)(), |
| int (S::*)() const&& noexcept > ()); |
| static_assert( |
| !check_totally_ordered_with<int (*)(), int (S::*)() volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (*)(), |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert( |
| !check_totally_ordered_with<int (*)(), int (S::*)() const volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (*)(), |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(check_totally_ordered_with<int (&)(), int (&)()>()); |
| static_assert(!check_totally_ordered_with<int (&)(), int (S::*)()>()); |
| static_assert(!check_totally_ordered_with<int (&)(), int (S::*)() noexcept>()); |
| static_assert(!check_totally_ordered_with<int (&)(), int (S::*)() const>()); |
| static_assert( |
| !check_totally_ordered_with<int (&)(), int (S::*)() const noexcept>()); |
| static_assert(!check_totally_ordered_with<int (&)(), int (S::*)() volatile>()); |
| static_assert( |
| !check_totally_ordered_with<int (&)(), int (S::*)() volatile noexcept>()); |
| static_assert( |
| !check_totally_ordered_with<int (&)(), int (S::*)() const volatile>()); |
| static_assert(!check_totally_ordered_with< |
| int (&)(), int (S::*)() const volatile noexcept>()); |
| static_assert(!check_totally_ordered_with<int (&)(), int (S::*)() &>()); |
| static_assert( |
| !check_totally_ordered_with<int (&)(), int (S::*)() & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (&)(), int (S::*)() const&>()); |
| static_assert( |
| !check_totally_ordered_with<int (&)(), int (S::*)() const & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (&)(), int (S::*)() volatile&>()); |
| static_assert( |
| !check_totally_ordered_with<int (&)(), int (S::*)() volatile & noexcept>()); |
| static_assert( |
| !check_totally_ordered_with<int (&)(), int (S::*)() const volatile&>()); |
| static_assert(!check_totally_ordered_with< |
| int (&)(), int (S::*)() const volatile & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (&)(), int (S::*)() &&>()); |
| static_assert(!check_totally_ordered_with < int (&)(), |
| int (S::*)() && noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (&)(), int (S::*)() const&&>()); |
| static_assert(!check_totally_ordered_with < int (&)(), |
| int (S::*)() const&& noexcept > ()); |
| static_assert( |
| !check_totally_ordered_with<int (&)(), int (S::*)() volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (&)(), |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert( |
| !check_totally_ordered_with<int (&)(), int (S::*)() const volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (&)(), |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(!check_totally_ordered_with<int (S::*)(), int (S::*)()>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)(), int (S::*)() noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)(), int (S::*)() const>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)(), int (S::*)() const noexcept>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)(), int (S::*)() volatile>()); |
| static_assert(!check_totally_ordered_with<int (S::*)(), |
| int (S::*)() volatile noexcept>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)(), int (S::*)() const volatile>()); |
| static_assert(!check_totally_ordered_with< |
| int (S::*)(), int (S::*)() const volatile noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)(), int (S::*)() &>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)(), int (S::*)() & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)(), int (S::*)() const&>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)(), int (S::*)() const & noexcept>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)(), int (S::*)() volatile&>()); |
| static_assert(!check_totally_ordered_with<int (S::*)(), |
| int (S::*)() volatile & noexcept>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)(), int (S::*)() const volatile&>()); |
| static_assert(!check_totally_ordered_with< |
| int (S::*)(), int (S::*)() const volatile & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)(), int (S::*)() &&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)(), |
| int (S::*)() && noexcept > ()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)(), int (S::*)() const&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)(), |
| int (S::*)() const&& noexcept > ()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)(), int (S::*)() volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)(), |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)(), int (S::*)() const volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)(), |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(!check_totally_ordered_with<int (S::*)() noexcept, |
| int (S::*)() noexcept>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() noexcept, int (S::*)() const>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() noexcept, |
| int (S::*)() const noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() noexcept, |
| int (S::*)() volatile>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() noexcept, |
| int (S::*)() volatile noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() noexcept, |
| int (S::*)() const volatile>()); |
| static_assert(!check_totally_ordered_with< |
| int (S::*)() noexcept, int (S::*)() const volatile noexcept>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() noexcept, int (S::*)() &>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() noexcept, |
| int (S::*)() & noexcept>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() noexcept, int (S::*)() const&>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() noexcept, |
| int (S::*)() const & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() noexcept, |
| int (S::*)() volatile&>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() noexcept, |
| int (S::*)() volatile & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() noexcept, |
| int (S::*)() const volatile&>()); |
| static_assert(!check_totally_ordered_with< |
| int (S::*)() noexcept, int (S::*)() const volatile & noexcept>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() noexcept, int (S::*)() &&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() noexcept, |
| int (S::*)() && noexcept > ()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() noexcept, int (S::*)() const&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() noexcept, |
| int (S::*)() const&& noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (S::*)() noexcept, |
| int (S::*)() volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() noexcept, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (S::*)() noexcept, |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() noexcept, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() const, int (S::*)() const>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const, |
| int (S::*)() const noexcept>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() const, int (S::*)() volatile>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const, |
| int (S::*)() volatile noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const, |
| int (S::*)() const volatile>()); |
| static_assert(!check_totally_ordered_with< |
| int (S::*)() const, int (S::*)() const volatile noexcept>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() const, int (S::*)() &>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() const, int (S::*)() & noexcept>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() const, int (S::*)() const&>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const, |
| int (S::*)() const & noexcept>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() const, int (S::*)() volatile&>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const, |
| int (S::*)() volatile & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const, |
| int (S::*)() const volatile&>()); |
| static_assert(!check_totally_ordered_with< |
| int (S::*)() const, int (S::*)() const volatile & noexcept>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() const, int (S::*)() &&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() const, |
| int (S::*)() && noexcept > ()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() const, int (S::*)() const&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() const, |
| int (S::*)() const&& noexcept > ()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() const, int (S::*)() volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() const, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const, |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() const, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(!check_totally_ordered_with<int (S::*)() const noexcept, |
| int (S::*)() const noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const noexcept, |
| int (S::*)() volatile>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const noexcept, |
| int (S::*)() volatile noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const noexcept, |
| int (S::*)() const volatile>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() const noexcept, |
| int (S::*)() const volatile noexcept>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() const noexcept, int (S::*)() &>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const noexcept, |
| int (S::*)() & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const noexcept, |
| int (S::*)() const&>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const noexcept, |
| int (S::*)() const & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const noexcept, |
| int (S::*)() volatile&>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const noexcept, |
| int (S::*)() volatile & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const noexcept, |
| int (S::*)() const volatile&>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() const noexcept, |
| int (S::*)() const volatile & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const noexcept, |
| int (S::*)() &&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() const noexcept, |
| int (S::*)() && noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const noexcept, |
| int (S::*)() const&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() const noexcept, |
| int (S::*)() const&& noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const noexcept, |
| int (S::*)() volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() const noexcept, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const noexcept, |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() const noexcept, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(!check_totally_ordered_with<int (S::*)() volatile, |
| int (S::*)() volatile>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() volatile, |
| int (S::*)() volatile noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() volatile, |
| int (S::*)() const volatile>()); |
| static_assert(!check_totally_ordered_with< |
| int (S::*)() volatile, int (S::*)() const volatile noexcept>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() volatile, int (S::*)() &>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() volatile, |
| int (S::*)() & noexcept>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() volatile, int (S::*)() const&>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() volatile, |
| int (S::*)() const & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() volatile, |
| int (S::*)() volatile&>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() volatile, |
| int (S::*)() volatile & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() volatile, |
| int (S::*)() const volatile&>()); |
| static_assert(!check_totally_ordered_with< |
| int (S::*)() volatile, int (S::*)() const volatile & noexcept>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() volatile, int (S::*)() &&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() volatile, |
| int (S::*)() && noexcept > ()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() volatile, int (S::*)() const&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() volatile, |
| int (S::*)() const&& noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (S::*)() volatile, |
| int (S::*)() volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() volatile, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (S::*)() volatile, |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() volatile, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(!check_totally_ordered_with<int (S::*)() volatile noexcept, |
| int (S::*)() volatile noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() volatile noexcept, |
| int (S::*)() const volatile>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() volatile noexcept, |
| int (S::*)() const volatile noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() volatile noexcept, |
| int (S::*)() &>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() volatile noexcept, |
| int (S::*)() & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() volatile noexcept, |
| int (S::*)() const&>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() volatile noexcept, |
| int (S::*)() const & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() volatile noexcept, |
| int (S::*)() volatile&>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() volatile noexcept, |
| int (S::*)() volatile & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() volatile noexcept, |
| int (S::*)() const volatile&>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() volatile noexcept, |
| int (S::*)() const volatile & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() volatile noexcept, |
| int (S::*)() &&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() volatile noexcept, |
| int (S::*)() && noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (S::*)() volatile noexcept, |
| int (S::*)() const&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() volatile noexcept, |
| int (S::*)() const&& noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (S::*)() volatile noexcept, |
| int (S::*)() volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() volatile noexcept, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (S::*)() volatile noexcept, |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() volatile noexcept, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(!check_totally_ordered_with<int (S::*)() const volatile, |
| int (S::*)() const volatile>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() const volatile, |
| int (S::*)() const volatile noexcept>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() const volatile, int (S::*)() &>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const volatile, |
| int (S::*)() & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const volatile, |
| int (S::*)() const&>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const volatile, |
| int (S::*)() const & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const volatile, |
| int (S::*)() volatile&>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const volatile, |
| int (S::*)() volatile & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const volatile, |
| int (S::*)() const volatile&>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() const volatile, |
| int (S::*)() const volatile & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const volatile, |
| int (S::*)() &&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() const volatile, |
| int (S::*)() && noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const volatile, |
| int (S::*)() const&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() const volatile, |
| int (S::*)() const&& noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const volatile, |
| int (S::*)() volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() const volatile, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const volatile, |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() const volatile, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() const volatile noexcept, |
| int (S::*)() const volatile noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const volatile noexcept, |
| int (S::*)() &>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const volatile noexcept, |
| int (S::*)() & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const volatile noexcept, |
| int (S::*)() const&>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const volatile noexcept, |
| int (S::*)() const & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const volatile noexcept, |
| int (S::*)() volatile&>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const volatile noexcept, |
| int (S::*)() volatile & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const volatile noexcept, |
| int (S::*)() const volatile&>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() const volatile noexcept, |
| int (S::*)() const volatile & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const volatile noexcept, |
| int (S::*)() &&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() |
| const volatile noexcept, |
| int (S::*)() && noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const volatile noexcept, |
| int (S::*)() const&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() |
| const volatile noexcept, |
| int (S::*)() const&& noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const volatile noexcept, |
| int (S::*)() volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() |
| const volatile noexcept, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const volatile noexcept, |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() |
| const volatile noexcept, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(!check_totally_ordered_with<int (S::*)() &, int (S::*)() &>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() &, int (S::*)() & noexcept>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() &, int (S::*)() const&>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() &, |
| int (S::*)() const & noexcept>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() &, int (S::*)() volatile&>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() &, |
| int (S::*)() volatile & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() &, |
| int (S::*)() const volatile&>()); |
| static_assert(!check_totally_ordered_with< |
| int (S::*)() &, int (S::*)() const volatile & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() &, int (S::*)() &&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() &, |
| int (S::*)() && noexcept > ()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() &, int (S::*)() const&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() &, |
| int (S::*)() const&& noexcept > ()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() &, int (S::*)() volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() &, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (S::*)() &, |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() &, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(!check_totally_ordered_with<int (S::*)() & noexcept, |
| int (S::*)() & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() & noexcept, |
| int (S::*)() const&>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() & noexcept, |
| int (S::*)() const & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() & noexcept, |
| int (S::*)() volatile&>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() & noexcept, |
| int (S::*)() volatile & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() & noexcept, |
| int (S::*)() const volatile&>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() & noexcept, |
| int (S::*)() const volatile & noexcept>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() & noexcept, int (S::*)() &&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() & noexcept, |
| int (S::*)() && noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (S::*)() & noexcept, |
| int (S::*)() const&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() & noexcept, |
| int (S::*)() const&& noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (S::*)() & noexcept, |
| int (S::*)() volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() & noexcept, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (S::*)() & noexcept, |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() & noexcept, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() const&, int (S::*)() const&>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const&, |
| int (S::*)() const & noexcept>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() const&, int (S::*)() volatile&>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const&, |
| int (S::*)() volatile & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const&, |
| int (S::*)() const volatile&>()); |
| static_assert(!check_totally_ordered_with< |
| int (S::*)() const&, int (S::*)() const volatile & noexcept>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() const&, int (S::*)() &&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() const&, |
| int (S::*)() && noexcept > ()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() const&, int (S::*)() const&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() const&, |
| int (S::*)() const&& noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const&, |
| int (S::*)() volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() const&, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const&, |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() const&, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(!check_totally_ordered_with<int (S::*)() const & noexcept, |
| int (S::*)() const & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const & noexcept, |
| int (S::*)() volatile&>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const & noexcept, |
| int (S::*)() volatile & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const & noexcept, |
| int (S::*)() const volatile&>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() const & noexcept, |
| int (S::*)() const volatile & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const & noexcept, |
| int (S::*)() &&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() const& noexcept, |
| int (S::*)() && noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const & noexcept, |
| int (S::*)() const&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() const& noexcept, |
| int (S::*)() const&& noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const & noexcept, |
| int (S::*)() volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() const& noexcept, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const & noexcept, |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() const& noexcept, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(!check_totally_ordered_with<int (S::*)() volatile&, |
| int (S::*)() volatile&>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() volatile&, |
| int (S::*)() volatile & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() volatile&, |
| int (S::*)() const volatile&>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() volatile&, |
| int (S::*)() const volatile & noexcept>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() volatile&, int (S::*)() &&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() volatile&, |
| int (S::*)() && noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (S::*)() volatile&, |
| int (S::*)() const&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() volatile&, |
| int (S::*)() const&& noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (S::*)() volatile&, |
| int (S::*)() volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() volatile&, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (S::*)() volatile&, |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() volatile&, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(!check_totally_ordered_with<int (S::*)() volatile & noexcept, |
| int (S::*)() volatile & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() volatile & noexcept, |
| int (S::*)() const volatile&>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() volatile & noexcept, |
| int (S::*)() const volatile & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() volatile & noexcept, |
| int (S::*)() &&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() volatile& noexcept, |
| int (S::*)() && noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (S::*)() volatile & noexcept, |
| int (S::*)() const&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() volatile& noexcept, |
| int (S::*)() const&& noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (S::*)() volatile & noexcept, |
| int (S::*)() volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() volatile& noexcept, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (S::*)() volatile & noexcept, |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() volatile& noexcept, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(!check_totally_ordered_with<int (S::*)() const volatile&, |
| int (S::*)() const volatile&>()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() const volatile&, |
| int (S::*)() const volatile & noexcept>()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const volatile&, |
| int (S::*)() &&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() const volatile&, |
| int (S::*)() && noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const volatile&, |
| int (S::*)() const&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() const volatile&, |
| int (S::*)() const&& noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const volatile&, |
| int (S::*)() volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() const volatile&, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const volatile&, |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() const volatile&, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() const volatile & noexcept, |
| int (S::*)() const volatile & noexcept>()); |
| static_assert(!check_totally_ordered_with< |
| int (S::*)() const volatile & noexcept, int (S::*)() &&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() |
| const volatile& noexcept, |
| int (S::*)() && noexcept > ()); |
| static_assert(!check_totally_ordered_with< |
| int (S::*)() const volatile & noexcept, int (S::*)() const&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() |
| const volatile& noexcept, |
| int (S::*)() const&& noexcept > ()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() const volatile & noexcept, |
| int (S::*)() volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() |
| const volatile& noexcept, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() const volatile & noexcept, |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() |
| const volatile& noexcept, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(!check_totally_ordered_with<int (S::*)() &&, int (S::*)() &&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() &&, |
| int (S::*)() && noexcept > ()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() &&, int (S::*)() const&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() &&, |
| int (S::*)() const&& noexcept > ()); |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() &&, int (S::*)() volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() &&, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (S::*)() &&, |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() &&, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(!check_totally_ordered_with < int (S::*)() && noexcept, |
| int (S::*)() && noexcept > ()); |
| static_assert(!check_totally_ordered_with < int (S::*)() && noexcept, |
| int (S::*)() const&& > ()); |
| static_assert(!check_totally_ordered_with < int (S::*)() && noexcept, |
| int (S::*)() const&& noexcept > ()); |
| static_assert(!check_totally_ordered_with < int (S::*)() && noexcept, |
| int (S::*)() volatile&& > ()); |
| static_assert(!check_totally_ordered_with < int (S::*)() && noexcept, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_totally_ordered_with < int (S::*)() && noexcept, |
| int (S::*)() const volatile&& > ()); |
| static_assert(!check_totally_ordered_with < int (S::*)() && noexcept, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert( |
| !check_totally_ordered_with<int (S::*)() const&&, int (S::*)() const&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() const&&, |
| int (S::*)() const&& noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const&&, |
| int (S::*)() volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() const&&, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (S::*)() const&&, |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() const&&, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(!check_totally_ordered_with < int (S::*)() const&& noexcept, |
| int (S::*)() const&& noexcept > ()); |
| static_assert(!check_totally_ordered_with < int (S::*)() const&& noexcept, |
| int (S::*)() volatile&& > ()); |
| static_assert(!check_totally_ordered_with < int (S::*)() const&& noexcept, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_totally_ordered_with < int (S::*)() const&& noexcept, |
| int (S::*)() const volatile&& > ()); |
| static_assert(!check_totally_ordered_with < int (S::*)() const&& noexcept, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(!check_totally_ordered_with<int (S::*)() volatile&&, |
| int (S::*)() volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() volatile&&, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_totally_ordered_with<int (S::*)() volatile&&, |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() volatile&&, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(!check_totally_ordered_with < int (S::*)() volatile&& noexcept, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_totally_ordered_with < int (S::*)() volatile&& noexcept, |
| int (S::*)() const volatile&& > ()); |
| static_assert(!check_totally_ordered_with < int (S::*)() volatile&& noexcept, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(!check_totally_ordered_with<int (S::*)() const volatile&&, |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_totally_ordered_with < int (S::*)() const volatile&&, |
| int (S::*)() const volatile&& noexcept > ()); |
| static_assert(!check_totally_ordered_with < int (S::*)() |
| const volatile&& noexcept, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| #if !defined(TEST_COMPILER_GCC) |
| static_assert(!check_totally_ordered_with<std::nullptr_t, int>()); |
| |
| static_assert(!check_totally_ordered_with<std::nullptr_t, int*>()); |
| static_assert(!check_totally_ordered_with<std::nullptr_t, int[]>()); |
| static_assert(!check_totally_ordered_with<std::nullptr_t, int[5]>()); |
| static_assert(!check_totally_ordered_with<std::nullptr_t, int (*)()>()); |
| static_assert(!check_totally_ordered_with<std::nullptr_t, int (&)()>()); |
| #endif |
| |
| static_assert(!check_totally_ordered_with<std::nullptr_t, int (S::*)()>()); |
| static_assert( |
| !check_totally_ordered_with<std::nullptr_t, int (S::*)() noexcept>()); |
| static_assert( |
| !check_totally_ordered_with<std::nullptr_t, int (S::*)() const>()); |
| static_assert( |
| !check_totally_ordered_with<std::nullptr_t, int (S::*)() const noexcept>()); |
| static_assert( |
| !check_totally_ordered_with<std::nullptr_t, int (S::*)() volatile>()); |
| static_assert(!check_totally_ordered_with<std::nullptr_t, |
| int (S::*)() volatile noexcept>()); |
| static_assert( |
| !check_totally_ordered_with<std::nullptr_t, int (S::*)() const volatile>()); |
| static_assert(!check_totally_ordered_with< |
| std::nullptr_t, int (S::*)() const volatile noexcept>()); |
| static_assert(!check_totally_ordered_with<std::nullptr_t, int (S::*)() &>()); |
| static_assert( |
| !check_totally_ordered_with<std::nullptr_t, int (S::*)() & noexcept>()); |
| static_assert( |
| !check_totally_ordered_with<std::nullptr_t, int (S::*)() const&>()); |
| static_assert(!check_totally_ordered_with<std::nullptr_t, |
| int (S::*)() const & noexcept>()); |
| static_assert( |
| !check_totally_ordered_with<std::nullptr_t, int (S::*)() volatile&>()); |
| static_assert(!check_totally_ordered_with<std::nullptr_t, |
| int (S::*)() volatile & noexcept>()); |
| static_assert(!check_totally_ordered_with<std::nullptr_t, |
| int (S::*)() const volatile&>()); |
| static_assert(!check_totally_ordered_with< |
| std::nullptr_t, int (S::*)() const volatile & noexcept>()); |
| static_assert(!check_totally_ordered_with<std::nullptr_t, int (S::*)() &&>()); |
| static_assert(!check_totally_ordered_with < std::nullptr_t, |
| int (S::*)() && noexcept > ()); |
| static_assert( |
| !check_totally_ordered_with<std::nullptr_t, int (S::*)() const&&>()); |
| static_assert(!check_totally_ordered_with < std::nullptr_t, |
| int (S::*)() const&& noexcept > ()); |
| static_assert( |
| !check_totally_ordered_with<std::nullptr_t, int (S::*)() volatile&&>()); |
| static_assert(!check_totally_ordered_with < std::nullptr_t, |
| int (S::*)() volatile&& noexcept > ()); |
| static_assert(!check_totally_ordered_with<std::nullptr_t, |
| int (S::*)() const volatile&&>()); |
| static_assert(!check_totally_ordered_with < std::nullptr_t, |
| int (S::*)() const volatile&& noexcept > ()); |
| |
| static_assert(!std::equality_comparable_with<void, int>); |
| static_assert(!std::equality_comparable_with<void, int*>); |
| static_assert(!std::equality_comparable_with<void, std::nullptr_t>); |
| static_assert(!std::equality_comparable_with<void, int[5]>); |
| static_assert(!std::equality_comparable_with<void, int (*)()>); |
| static_assert(!std::equality_comparable_with<void, int (&)()>); |
| static_assert(!std::equality_comparable_with<void, int S::*>); |
| static_assert(!std::equality_comparable_with<void, int (S::*)()>); |
| static_assert(!std::equality_comparable_with<void, int (S::*)() noexcept>); |
| static_assert(!std::equality_comparable_with<void, int (S::*)() const>); |
| static_assert( |
| !std::equality_comparable_with<void, int (S::*)() const noexcept>); |
| static_assert(!std::equality_comparable_with<void, int (S::*)() volatile>); |
| static_assert( |
| !std::equality_comparable_with<void, int (S::*)() volatile noexcept>); |
| static_assert( |
| !std::equality_comparable_with<void, int (S::*)() const volatile>); |
| static_assert( |
| !std::equality_comparable_with<void, int (S::*)() const volatile noexcept>); |
| static_assert(!std::equality_comparable_with<void, int (S::*)() &>); |
| static_assert(!std::equality_comparable_with<void, int (S::*)() & noexcept>); |
| static_assert(!std::equality_comparable_with<void, int (S::*)() const&>); |
| static_assert( |
| !std::equality_comparable_with<void, int (S::*)() const & noexcept>); |
| static_assert(!std::equality_comparable_with<void, int (S::*)() volatile&>); |
| static_assert( |
| !std::equality_comparable_with<void, int (S::*)() volatile & noexcept>); |
| static_assert( |
| !std::equality_comparable_with<void, int (S::*)() const volatile&>); |
| static_assert(!std::equality_comparable_with<void, int (S::*)() const volatile & |
| noexcept>); |
| static_assert(!std::equality_comparable_with<void, int (S::*)() &&>); |
| static_assert(!std::equality_comparable_with < void, |
| int (S::*)() && noexcept >); |
| static_assert(!std::equality_comparable_with<void, int (S::*)() const&&>); |
| static_assert(!std::equality_comparable_with < void, |
| int (S::*)() const&& noexcept >); |
| static_assert(!std::equality_comparable_with<void, int (S::*)() volatile&&>); |
| static_assert(!std::equality_comparable_with < void, |
| int (S::*)() volatile&& noexcept >); |
| static_assert( |
| !std::equality_comparable_with<void, int (S::*)() const volatile&&>); |
| static_assert(!std::equality_comparable_with < void, |
| int (S::*)() const volatile&& noexcept >); |
| } // namespace fundamentals |
| |
| namespace standard_types { |
| static_assert( |
| check_totally_ordered_with<std::array<int, 10>, std::array<int, 10> >()); |
| static_assert(!check_totally_ordered_with<std::array<int, 10>, |
| std::array<double, 10> >()); |
| static_assert(check_totally_ordered_with<std::deque<int>, std::deque<int> >()); |
| static_assert( |
| !check_totally_ordered_with<std::deque<int>, std::vector<int> >()); |
| static_assert(check_totally_ordered_with<std::forward_list<int>, |
| std::forward_list<int> >()); |
| static_assert( |
| !check_totally_ordered_with<std::forward_list<int>, std::vector<int> >()); |
| static_assert(check_totally_ordered_with<std::list<int>, std::list<int> >()); |
| static_assert(!check_totally_ordered_with<std::list<int>, std::vector<int> >()); |
| |
| static_assert( |
| check_totally_ordered_with<std::map<int, void*>, std::map<int, void*> >()); |
| static_assert( |
| !check_totally_ordered_with<std::map<int, void*>, std::vector<int> >()); |
| static_assert(check_totally_ordered_with<std::optional<std::vector<int> >, |
| std::optional<std::vector<int> > >()); |
| static_assert(check_totally_ordered_with<std::optional<std::vector<int> >, |
| std::vector<int> >()); |
| static_assert( |
| check_totally_ordered_with<std::vector<int>, std::vector<int> >()); |
| static_assert(!check_totally_ordered_with<std::vector<int>, int>()); |
| |
| struct A {}; |
| // FIXME(cjdb): uncomment when operator<=> is implemented for each of these types. |
| // static_assert(!check_totally_ordered_with<std::optional<std::vector<A> >, |
| // std::optional<std::vector<A> > >()); |
| // static_assert(!check_totally_ordered_with<std::optional<std::vector<A> >, |
| // std::vector<A> >()); |
| struct B {}; |
| static_assert(!check_totally_ordered_with<std::vector<A>, std::vector<B> >()); |
| static_assert( |
| !check_totally_ordered_with<std::optional<A>, std::optional<B> >()); |
| } // namespace standard_types |
| |
| namespace types_fit_for_purpose { |
| static_assert(!check_totally_ordered_with<cxx20_member_eq, cxx20_member_eq>()); |
| static_assert(!check_totally_ordered_with<cxx20_friend_eq, cxx20_friend_eq>()); |
| static_assert(!check_totally_ordered_with<cxx20_member_eq, cxx20_friend_eq>()); |
| |
| static_assert(check_totally_ordered_with<member_three_way_comparable, |
| member_three_way_comparable>()); |
| static_assert(check_totally_ordered_with<friend_three_way_comparable, |
| friend_three_way_comparable>()); |
| static_assert(!check_totally_ordered_with<member_three_way_comparable, |
| friend_three_way_comparable>()); |
| |
| static_assert( |
| check_totally_ordered_with<explicit_operators, explicit_operators>()); |
| static_assert(!check_totally_ordered_with<equality_comparable_with_ec1, |
| equality_comparable_with_ec1>()); |
| static_assert(check_totally_ordered_with<different_return_types, |
| different_return_types>()); |
| static_assert(!check_totally_ordered_with<explicit_operators, |
| equality_comparable_with_ec1>()); |
| static_assert( |
| check_totally_ordered_with<explicit_operators, different_return_types>()); |
| |
| static_assert(!check_totally_ordered_with<one_way_eq, one_way_eq>()); |
| static_assert( |
| std::common_reference_with<one_way_eq const&, explicit_operators const&> && |
| !check_totally_ordered_with<one_way_eq, explicit_operators>()); |
| |
| static_assert(!check_totally_ordered_with<one_way_ne, one_way_ne>()); |
| static_assert( |
| std::common_reference_with<one_way_ne const&, explicit_operators const&> && |
| !check_totally_ordered_with<one_way_ne, explicit_operators>()); |
| |
| static_assert( |
| check_totally_ordered_with<totally_ordered_with_others, |
| partial_ordering_totally_ordered_with>()); |
| static_assert(check_totally_ordered_with<totally_ordered_with_others, |
| weak_ordering_totally_ordered_with>()); |
| static_assert( |
| check_totally_ordered_with<totally_ordered_with_others, |
| strong_ordering_totally_ordered_with>()); |
| |
| static_assert(!check_totally_ordered_with<totally_ordered_with_others, |
| eq_returns_explicit_bool>()); |
| static_assert(!check_totally_ordered_with<totally_ordered_with_others, |
| ne_returns_explicit_bool>()); |
| static_assert(std::equality_comparable_with<totally_ordered_with_others, |
| lt_returns_explicit_bool> && |
| !check_totally_ordered_with<totally_ordered_with_others, |
| lt_returns_explicit_bool>()); |
| static_assert(std::equality_comparable_with<totally_ordered_with_others, |
| gt_returns_explicit_bool> && |
| !check_totally_ordered_with<totally_ordered_with_others, |
| gt_returns_explicit_bool>()); |
| static_assert(std::equality_comparable_with<totally_ordered_with_others, |
| le_returns_explicit_bool> && |
| !check_totally_ordered_with<totally_ordered_with_others, |
| le_returns_explicit_bool>()); |
| static_assert(std::equality_comparable_with<totally_ordered_with_others, |
| ge_returns_explicit_bool> && |
| !check_totally_ordered_with<totally_ordered_with_others, |
| ge_returns_explicit_bool>()); |
| static_assert(check_totally_ordered_with<totally_ordered_with_others, |
| returns_true_type>()); |
| static_assert( |
| check_totally_ordered_with<totally_ordered_with_others, returns_int_ptr>()); |
| |
| static_assert( |
| std::totally_ordered<no_lt_not_totally_ordered_with>&& |
| std::equality_comparable_with<totally_ordered_with_others, |
| no_lt_not_totally_ordered_with> && |
| !check_totally_ordered_with<totally_ordered_with_others, |
| no_lt_not_totally_ordered_with>()); |
| static_assert( |
| std::totally_ordered<no_gt_not_totally_ordered_with>&& |
| std::equality_comparable_with<totally_ordered_with_others, |
| no_gt_not_totally_ordered_with> && |
| !check_totally_ordered_with<totally_ordered_with_others, |
| no_gt_not_totally_ordered_with>()); |
| static_assert( |
| std::totally_ordered<no_le_not_totally_ordered_with>&& |
| std::equality_comparable_with<totally_ordered_with_others, |
| no_le_not_totally_ordered_with> && |
| !check_totally_ordered_with<totally_ordered_with_others, |
| no_le_not_totally_ordered_with>()); |
| static_assert( |
| std::totally_ordered<no_ge_not_totally_ordered_with>&& |
| std::equality_comparable_with<totally_ordered_with_others, |
| no_ge_not_totally_ordered_with> && |
| !check_totally_ordered_with<totally_ordered_with_others, |
| no_ge_not_totally_ordered_with>()); |
| } // namespace types_fit_for_purpose |
| |
| int main(int, char**) { return 0; } |