struct ov::Any::EqualityComparable

template <typename T>
struct EqualityComparable
{
    // fields

    static constexpr static const bool value = sizeof(test<T>(nullptr)) == sizeof(char);

    // methods

    static void \* conv(bool);

    template <typename U>
    static char test(decltype(conv(std::declval<U>()==std::declval<U>())));

    template <typename U>
    static long test(...);
};

struct ov::Any::EqualityComparable<std::map<T…>>

template <typename... T>
struct EqualityComparable<std::map<T...>>
{
    // fields

    static constexpr static const bool value = sizeof(test<std::map<T...>>(nullptr)) == sizeof(char);

    // methods

    static void \* conv(bool);

    template <typename U>
    static char test(decltype(conv(std::declval<typename U::key_type>()==std::declval<typename U::key_type>()&&std::declval<typename U::mapped_type>()==std::declval<typename U::mapped_type>())));

    template <typename U>
    static long test(...);
};

struct ov::Any::EqualityComparable<std::vector<T…>>

template <typename... T>
struct EqualityComparable<std::vector<T...>>
{
    // fields

    static constexpr static const bool value = sizeof(test<std::vector<T...>>(nullptr)) == sizeof(char);

    // methods

    static void \* conv(bool);

    template <typename U>
    static char test(decltype(conv(std::declval<typename U::value_type>()==std::declval<typename U::value_type>())));

    template <typename U>
    static long test(...);
};