File indexing completed on 2026-05-03 08:13:16
0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef _LIBCPP___COMPARE_COMPARE_THREE_WAY_RESULT_H
0010 #define _LIBCPP___COMPARE_COMPARE_THREE_WAY_RESULT_H
0011
0012 #include <__config>
0013 #include <__type_traits/make_const_lvalue_ref.h>
0014 #include <__utility/declval.h>
0015
0016 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
0017 # pragma GCC system_header
0018 #endif
0019
0020 _LIBCPP_BEGIN_NAMESPACE_STD
0021
0022 #if _LIBCPP_STD_VER >= 20
0023
0024 template <class, class, class>
0025 struct _LIBCPP_HIDE_FROM_ABI __compare_three_way_result {};
0026
0027 template <class _Tp, class _Up>
0028 struct _LIBCPP_HIDE_FROM_ABI __compare_three_way_result<
0029 _Tp,
0030 _Up,
0031 decltype(std::declval<__make_const_lvalue_ref<_Tp>>() <=> std::declval<__make_const_lvalue_ref<_Up>>(), void())> {
0032 using type = decltype(std::declval<__make_const_lvalue_ref<_Tp>>() <=> std::declval<__make_const_lvalue_ref<_Up>>());
0033 };
0034
0035 template <class _Tp, class _Up = _Tp>
0036 struct _LIBCPP_TEMPLATE_VIS _LIBCPP_NO_SPECIALIZATIONS compare_three_way_result
0037 : __compare_three_way_result<_Tp, _Up, void> {};
0038
0039 template <class _Tp, class _Up = _Tp>
0040 using compare_three_way_result_t = typename compare_three_way_result<_Tp, _Up>::type;
0041
0042 #endif
0043
0044 _LIBCPP_END_NAMESPACE_STD
0045
0046 #endif