15 #include <daw/cpp_17.h>
16 #include <daw/daw_attributes.h>
17 #include <daw/daw_move.h>
18 #include <daw/daw_traits.h>
21 #include <type_traits>
29 namespace json_details {
30 template<
typename T,
typename... Args>
31 inline constexpr
bool should_list_construct_v =
32 not std::is_constructible_v<T, Args...> and
33 daw::traits::is_list_constructible_v<T, Args...>;
38 template<
typename T,
typename =
void>
43 std::is_constructible_v<T, Args...> )>
48 return T( DAW_FWD( args )... );
52 json_details::should_list_construct_v<T, Args...> )>
56 noexcept( std::is_nothrow_constructible_v<T, Args...> ) {
57 return T{ DAW_FWD( args )... };
65 template<
typename T,
typename =
void>
73 not concepts::is_nullable_value_v<T> )
75 concepts::nullable_impl::is_list_constructible_v<T> and
#define DAW_JSON_ENABLEIF_S(...)
#define DAW_JSON_CPP23_STATIC_CALL_OP_CONST
#define DAW_JSON_ENABLEIF(...)
#define DAW_JSON_CPP23_STATIC_CALL_OP
This is in addition to the parse policy. Always do a full name match instead of sometimes relying on ...
constexpr bool is_nullable_value_v
Is T a nullable type.
Customization point traits.
DAW_JSON_REQUIRES(boost::describe::has_describe_members< T >::value and use_boost_describe_v< T >) struct json_data_contract< T >
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.