Commit 079cabf6 authored by Tomáš Jakubec's avatar Tomáš Jakubec
Browse files

enable_if -> void_t

parent 3e13bb79
Loading
Loading
Loading
Loading
Loading
+14 −46
Original line number Diff line number Diff line
@@ -6,7 +6,8 @@

namespace Impl {


template<typename ...>
using void_t = void;

template <typename T1, typename T2 = void>
struct __is_exportable : public std::false_type {
@@ -14,13 +15,8 @@ struct __is_exportable : public std::false_type {
};

template <typename T1>
struct __is_exportable<T1, typename std::enable_if<std::is_class<
        typename std::remove_reference<decltype(std::cerr << std::declval<const T1&>())>::type
        >::value>::type> : public std::true_type {};




struct __is_exportable< T1,
                        void_t<decltype(std::cerr << std::declval<const T1&>())> > : public std::true_type {};



@@ -28,46 +24,24 @@ template <typename T1, typename T2 = void>
struct __is_iterable : public std::false_type {};

template <typename T1>
struct __is_iterable<T1, typename std::enable_if<
            !std::is_same<
                decltype (std::declval<const T1&>().begin()),
                void
            >::value &&
            !std::is_same<
                decltype (std::declval<const T1&>().end()),
                void
            >::value
        >::type> : public std::true_type {};
struct __is_iterable< T1,
                      void_t<decltype(std::declval<const T1&>().begin()), decltype (std::declval<const T1&>().end())> > : public std::true_type {};


template <typename T1, typename T2 = void>
struct __is_indexable : public std::false_type {};

template <typename T1>
struct __is_indexable<T1, typename std::enable_if<
            !std::is_same<
                decltype (std::declval<const T1&>()[0]),
                void
            >::value &&
            !std::is_same<
                decltype (std::declval<const T1&>().size()),
                void
            >::value
    >::type> : public std::true_type {};
struct __is_indexable< T1,
                       void_t<decltype (std::declval<const T1&>()[0]), decltype (std::declval<const T1&>().size())> > : public std::true_type {};


template <typename T1, typename T2 = void>
struct __is_tnl_indexable : public std::false_type {};

template <typename T1>
struct __is_tnl_indexable<T1, typename std::enable_if<
            !std::is_same<
                decltype (std::declval<const T1&>()[0]), void
            >::value &&
            !std::is_same<
                decltype (std::declval<const T1&>().getSize()), void
            >::value
    >::type> : public std::true_type {};
struct __is_tnl_indexable< T1,
                           void_t<decltype (std::declval<const T1&>()[0]), decltype (std::declval<const T1&>().getSize())> > : public std::true_type {};


template <typename T1, typename VOID = void>
@@ -77,23 +51,19 @@ struct __has_default_traits : public std::false_type {};
template <typename T1>
struct __has_default_traits<
        T1,
        typename std::enable_if<
            noexcept(DefaultTraits<T1>::getTraits)
        >::type
        void_t<decltype(DefaultTraits<T1>::getTraits)>
        > : public std::true_type {};



template <typename T1, typename VOID = void>
template <typename T1, typename = void>
struct __has_default_io_traits : public std::false_type {};


template <typename T1>
struct __has_default_io_traits<
        T1,
        typename std::enable_if<
            noexcept(DefaultIOTraits<T1>::getTraits)
        >::type
        void_t<decltype(DefaultIOTraits<T1>::getTraits)>
        > : public std::true_type {};


@@ -105,9 +75,7 @@ struct __has_default_arithmetic_traits : public std::false_type {};
template <typename T1>
struct __has_default_arithmetic_traits<
        T1,
        typename std::enable_if<
            noexcept(DefaultArithmeticTraits<T1>::getTraits)
        >::type
        void_t<decltype(DefaultArithmeticTraits<T1>::getTraits)>
        > : public std::true_type {};

} // Impl namespace