![]() |
Home | Libraries | People | FAQ | More |
Determine if T can be treated
like a 1-to-1 mapping during conversions.
Defined in header <boost/json/conversion.hpp>
template< class T> struct is_map_like
Given t, a glvalue of type
T, if
is_sequence_like<T>::value is true;
and
It denoting
decltype(std::begin(t)),
and types K and M, std::iterator_traits<It>::value_type
denotes std::pair<K, M>;
and
std::is_string_like<K>::value is true;
and
v, a glvalue of
type V, and E, the type denoted by decltype(t.emplace(v)),
std::is_tuple_like<E>::value is true;
then the trait provides the member constant value
that is equal to true. Otherwise,
value is equal to false.
Users can specialize the trait for their own types if they don't want them to be treated like mappings. For example:
namespace boost { namespace json { template <> struct is_map_like<your::map> : std::false_type { }; } // namespace boost } // namespace json
The restriction for t.emplace()
return type ensures that the container does not accept duplicate keys.
Convenience header <boost/json.hpp>