|
10 | 10 | #define V8PP_UTILITY_HPP_INCLUDED |
11 | 11 |
|
12 | 12 | #include <functional> |
13 | | -#include <iterator> |
14 | 13 | #include <string_view> |
15 | 14 | #include <tuple> |
16 | 15 | #include <type_traits> |
@@ -54,45 +53,33 @@ struct is_string<wchar_t const*> : std::true_type {}; |
54 | 53 | // is_mapping<T> |
55 | 54 | // |
56 | 55 | template<typename T, typename U = void> |
57 | | -struct is_mapping_impl : std::false_type {}; |
| 56 | +struct is_mapping : std::false_type {}; |
58 | 57 |
|
59 | 58 | template<typename T> |
60 | | -struct is_mapping_impl<T, std::void_t<typename T::key_type, typename T::mapped_type, |
| 59 | +struct is_mapping<T, std::void_t<typename T::key_type, typename T::mapped_type, |
61 | 60 | decltype(std::declval<T>().begin()), decltype(std::declval<T>().end())>> : std::true_type {}; |
62 | 61 |
|
63 | | -template<typename T> |
64 | | -struct is_mapping : is_mapping_impl<T>::type {}; |
65 | | - |
66 | 62 | ///////////////////////////////////////////////////////////////////////////// |
67 | 63 | // |
68 | 64 | // is_sequence<T> |
69 | 65 | // |
70 | 66 | template<typename T, typename U = void> |
71 | | -struct is_sequence_impl : std::false_type {}; |
| 67 | +struct is_sequence : std::false_type {}; |
72 | 68 |
|
73 | 69 | template<typename T> |
74 | | -struct is_sequence_impl<T, std::void_t<typename T::value_type, |
| 70 | +struct is_sequence<T, std::void_t<typename T::value_type, |
75 | 71 | decltype(std::declval<T>().begin()), decltype(std::declval<T>().end()), |
76 | | - decltype(std::declval<T>().emplace_back(std::declval<typename T::value_type>()))>> |
77 | | - : std::negation<is_string<T>> |
78 | | -{ |
79 | | -}; |
80 | | - |
81 | | -template<typename T> |
82 | | -struct is_sequence : is_sequence_impl<T> {}; |
| 72 | + decltype(std::declval<T>().emplace_back(std::declval<typename T::value_type>()))>> : std::negation<is_string<T>> {}; |
83 | 73 |
|
84 | 74 | ///////////////////////////////////////////////////////////////////////////// |
85 | 75 | // |
86 | 76 | // has_reserve<T> |
87 | 77 | // |
88 | 78 | template<typename T, typename U = void> |
89 | | -struct has_reserve_impl : std::false_type {}; |
90 | | - |
91 | | -template<typename T> |
92 | | -struct has_reserve_impl<T, std::void_t<decltype(std::declval<T>().reserve(0))>> : std::true_type {}; |
| 79 | +struct has_reserve : std::false_type {}; |
93 | 80 |
|
94 | 81 | template<typename T> |
95 | | -struct has_reserve : has_reserve_impl<T>::type {}; |
| 82 | +struct has_reserve<T, std::void_t<decltype(std::declval<T>().reserve(0))>> : std::true_type {}; |
96 | 83 |
|
97 | 84 | ///////////////////////////////////////////////////////////////////////////// |
98 | 85 | // |
|
0 commit comments