AC
2. operator< может быть свободной функцией
3. вспомогательные функции лучше убрать в приват
4. переменная в трейте по общему соглашению называется value
заодно и ошибку нашёл
Size: a a a
AC
AB
AC
template<typename T1, typename T2>
struct has_operator_less {
template<typename T>
struct equal{};
template<typename F1, typename F2>
static std::true_type f(equal<decltype (std::declval<F1>()<std::declval<F2>())>*);
template<typename F1, typename F2>
static std::false_type f(...);
};
DP
AB
DP
AB
AB
AC
AB
template<typename T1, typename T2>
struct has_operator_less {
template<typename T>
struct equal{};
template<typename F1, typename F2>
static std::true_type f(equal<decltype (std::declval<F1>()<std::declval<F2>())>*);
template<typename F1, typename F2>
static std::false_type f(...);
};
template <typename T, typename = void>
inline constexpr has_less_v = false;
template <typename T>
inline constexpr has_less_v<T, std::void_t<decltype(std::declval<T>() < std::declval<T>())>> = true;
В
template <typename T, typename = void>
inline constexpr has_less_v = false;
template <typename T>
inline constexpr has_less_v<T, std::void_t<decltype(std::declval<T>() < std::declval<T>())>> = true;
template <typename T, typename = void>
struct has_less_v : std::false_type {};
template <typename T>
struct has_less_v<T, std::void_t<decltype(std::declval<T>() < std::declval<T>())>> : std::true_type {};
AB
template <typename T, typename = void>
struct has_less_v : std::false_type {};
template <typename T>
struct has_less_v<T, std::void_t<decltype(std::declval<T>() < std::declval<T>())>> : std::true_type {};
В
AB
AB
В
В
D
C
cpp
struct hmm : decltype (auto) ... { };
1740436816/source.cpp:1:31: internal compiler error: in cxx_incomplete_type_diagnostic, at cp/typeck2.c:574
struct hmm : decltype (auto) ... { };
^~~
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-7/README.Bugs> for instructions.
cplusplus_gcc assumed, other valid options are cplusplus_clang, visual_cplusplus, you can be more specific next time.
AB
cpp
struct hmm : decltype (auto) ... { };
1740436816/source.cpp:1:31: internal compiler error: in cxx_incomplete_type_diagnostic, at cp/typeck2.c:574
struct hmm : decltype (auto) ... { };
^~~
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-7/README.Bugs> for instructions.
cplusplus_gcc assumed, other valid options are cplusplus_clang, visual_cplusplus, you can be more specific next time.