13#include <daw/cpp_17.h>
14#include <daw/daw_traits.h>
22 namespace json_details {
23 template<
typename Alloc,
bool >
25 using allocator_t = std::remove_reference_t<Alloc>;
26 allocator_t *allocator_ptr;
30 : allocator_ptr( &alloc ) {}
33 return *allocator_ptr;
37 template<
typename Alloc>
39 using allocator_t = std::remove_reference_t<Alloc>;
40 static constexpr allocator_t allocator{ };
51 template<
typename Alloc>
58 std::is_empty<allocator_type>::value>(
63 template<
typename A,
typename T>
66 typename std::allocator_traits<A>::template rebind_alloc<T>;
69 template<
typename A,
typename T>
71 typename std::allocator_traits<A>::template rebind_traits<T>::type;
73 template<
typename A,
typename T>
75 daw::is_detected<has_allocator_type_as_rebind, A, T>::value;
80 std::conditional_t<has_rebind_v<allocator_type, T>,
103 [[maybe_unused]] inline std::allocator<T>
105 return std::allocator<T>( );
std::allocator< char > allocator_type
Definition: daw_json_allocator_wrapper.h:97
std::allocator< T > allocator_type_as
Definition: daw_json_allocator_wrapper.h:100
constexpr AllocatorWrapper() noexcept=default
allocator_t & get_allocator() const
Definition: daw_json_allocator_wrapper.h:46
constexpr AllocatorWrapperBase()=default
constexpr AllocatorWrapperBase(allocator_t &) noexcept
Definition: daw_json_allocator_wrapper.h:44
Definition: daw_json_allocator_wrapper.h:24
AllocatorWrapperBase(allocator_t &alloc) noexcept
Definition: daw_json_allocator_wrapper.h:29
allocator_t & get_allocator() const
Definition: daw_json_allocator_wrapper.h:32
Definition: daw_from_json.h:22
Definition: daw_json_allocator_wrapper.h:64
typename std::allocator_traits< A >::template rebind_alloc< T > type
Definition: daw_json_allocator_wrapper.h:66
Definition: daw_json_allocator_wrapper.h:53
std::conditional_t< has_rebind_v< allocator_type, T >, allocator_type_as_rebind< allocator_type, T >, allocator_type > allocator_type_as
Definition: daw_json_allocator_wrapper.h:82
typename std::allocator_traits< A >::template rebind_traits< T >::type has_allocator_type_as_rebind
Definition: daw_json_allocator_wrapper.h:71
std::remove_reference_t< Alloc > allocator_type
Definition: daw_json_allocator_wrapper.h:54
AllocatorWrapper(allocator_type &alloc) noexcept
Definition: daw_json_allocator_wrapper.h:56
static constexpr bool has_rebind_v
Definition: daw_json_allocator_wrapper.h:74
auto get_allocator_for(template_param< T >) const
Definition: daw_json_allocator_wrapper.h:85
static constexpr bool has_allocator
Definition: daw_json_allocator_wrapper.h:61
Definition: daw_json_allocator_wrapper.h:90
#define DAW_JSON_VER
The version string used in namespace definitions. Must be a valid namespace name.
Definition: version.h:16