|
|
@@ -13,8 +13,14 @@ template <typename T, typename = void> struct is_container : std::false_type {};
|
|
|
template <typename T>
|
|
|
struct is_container<T, std::enable_if_t<!std::is_void_v<typename T::value_type>>> : std::true_type {};
|
|
|
|
|
|
+template <typename T, typename = void> struct is_map_value_type : std::false_type {};
|
|
|
+template <typename K, typename V>
|
|
|
+struct is_map_value_type<std::pair<K const, V>> : std::true_type {};
|
|
|
+
|
|
|
template <typename T>
|
|
|
static constexpr bool const is_string_v = is_string<T>::value;
|
|
|
template <typename T>
|
|
|
static constexpr bool const is_container_v = is_container<T>::value;
|
|
|
+template <typename T>
|
|
|
+static constexpr bool const is_map_value_type_v = is_map_value_type<T>::value;
|
|
|
}
|