15#include <daw/cpp_17.h>
16#include <daw/daw_attributes.h>
17#include <daw/daw_cpp20_concept.h>
18#include <daw/daw_enable_requires.h>
19#include <daw/daw_move.h>
20#include <daw/daw_traits.h>
31 namespace json_details {
32 template<
typename T,
typename... Args>
33 DAW_CPP20_CONCEPT should_list_construct_v =
34 not std::is_constructible_v<T, Args...> and
35 daw::traits::is_list_constructible_v<T, Args...>;
40 template<
typename T,
typename =
void>
45 typename... Args DAW_ENABLEIF( std::is_constructible_v<T, Args...> )>
50 return T( DAW_FWD( args )... );
53 template<
typename... Args DAW_ENABLEIF(
54 json_details::should_list_construct_v<T, Args...> )>
55 DAW_REQUIRES( json_details::should_list_construct_v<T, Args...> )
58 noexcept( std::is_nothrow_constructible_v<T, Args...> ) {
59 return T{ DAW_FWD( args )... };
67 template<
typename T,
typename =
void>
74 DAW_REQUIRES( concepts::nullable_impl::is_list_constructible_v<T> and
75 not concepts::is_nullable_value_v<T> )
77 concepts::nullable_impl::is_list_constructible_v<T> and
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.
#define DAW_JSON_CPP23_STATIC_CALL_OP_CONST
#define DAW_JSON_CPP23_STATIC_CALL_OP
string_writer grows its string with resize_and_overwrite, leaving the new bytes uninitialized,...
Default Constructor for a type. It accounts for aggregate types and uses brace construction for them.
void i_am_the_default_default_constructor_type
Default constructor for nullable types. Specializations must accept accept an operator( )( ) that sig...
#define DAW_JSON_VER
The version string used in namespace definitions. Must be a valid namespace name.