15#include <daw/daw_cpp_feature_check.h>
16#include <daw/daw_enable_requires.h>
17#include <daw/daw_traits.h>
24 namespace json_details {
26 is_opted_into_json_iostreams_v,
29#if defined( DAW_HAS_CPP20_CONCEPTS )
30 template<
typename Container>
31 concept is_container_opted_into_json_iostreams_v =
requires {
32 typename Container::value_type;
34 and is_opted_into_json_iostreams_v<typename Container::value_type>;
36 template<
typename,
typename =
void>
37 inline constexpr bool is_container_opted_into_json_iostreams_v =
false;
39 template<
typename Container>
40 inline constexpr bool is_container_opted_into_json_iostreams_v<
41 Container, std::void_t<typename Container::value_type>> =
42 is_opted_into_json_iostreams_v<typename Container::value_type>;
49template<
typename T DAW_ENABLEIF(
50 daw::json::json_details::is_opted_into_json_iostreams_v<T> )>
51DAW_REQUIRES( daw::json::json_details::is_opted_into_json_iostreams_v<T> )
52std::ostream &operator<<(
std::ostream &os, T const &value ) {
58template<
typename Container DAW_ENABLEIF(
59 daw::json::json_details::is_container_opted_into_json_iostreams_v<
62 daw::json::json_details::is_container_opted_into_json_iostreams_v<Container> )
64operator<<( std::ostream &os, Container
const &c ) {
DAW_REQUIRES(daw::json::json_details::is_container_opted_into_json_iostreams_v< Container >) std
An opt in ostream interface for containers of types that have JSON mappings.
std::ostream & operator<<(std::ostream &os, T const &value)
An opt in ostream interface for types that have JSON mappings.
#define DAW_JSON_MAKE_REQ_TYPE_ALIAS_TRAIT(Name,...)
DAW_CPP20_CX_ALLOC std::string to_json(Value const &value, options::output_flags_t< PolicyFlags... > flgs)
DAW_CPP20_CX_ALLOC std::string to_json_array(Container const &c, options::output_flags_t< PolicyFlags... > flgs)
Customization point traits.
Mapping class for JSON data structures to C++. It must be specialized in order to parse to a user cla...
#define DAW_JSON_VER
The version string used in namespace definitions. Must be a valid namespace name.