Loading src/GTMesh/Traits/CustomTypeTraits.h +14 −46 Original line number Diff line number Diff line Loading @@ -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 { Loading @@ -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 {}; Loading @@ -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> Loading @@ -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 {}; Loading @@ -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 Loading Loading
src/GTMesh/Traits/CustomTypeTraits.h +14 −46 Original line number Diff line number Diff line Loading @@ -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 { Loading @@ -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 {}; Loading @@ -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> Loading @@ -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 {}; Loading @@ -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 Loading