♻️ allow allocators for vectors

This commit is contained in:
Niels Lohmann 2021-08-30 18:04:35 +02:00
parent fd0aa4fb0d
commit 5b93e7640c
No known key found for this signature in database
GPG Key ID: 7F3CEA63AE251B69
2 changed files with 12 additions and 10 deletions

View File

@ -37,11 +37,11 @@ template<typename CharType>
using output_adapter_t = std::shared_ptr<output_adapter_protocol<CharType>>;
/// output adapter for byte vectors
template<typename CharType>
template<typename CharType, typename AllocatorType = std::allocator<CharType>>
class output_vector_adapter : public output_adapter_protocol<CharType>
{
public:
explicit output_vector_adapter(std::vector<CharType>& vec) noexcept
explicit output_vector_adapter(std::vector<CharType, AllocatorType>& vec) noexcept
: v(vec)
{}
@ -57,7 +57,7 @@ class output_vector_adapter : public output_adapter_protocol<CharType>
}
private:
std::vector<CharType>& v;
std::vector<CharType, AllocatorType>& v;
};
#ifndef JSON_NO_IO
@ -114,8 +114,9 @@ template<typename CharType, typename StringType = std::basic_string<CharType>>
class output_adapter
{
public:
output_adapter(std::vector<CharType>& vec)
: oa(std::make_shared<output_vector_adapter<CharType>>(vec)) {}
template<typename AllocatorType = std::allocator<CharType>>
output_adapter(std::vector<CharType, AllocatorType>& vec)
: oa(std::make_shared<output_vector_adapter<CharType, AllocatorType>>(vec)) {}
#ifndef JSON_NO_IO
output_adapter(std::basic_ostream<CharType>& s)

View File

@ -13485,11 +13485,11 @@ template<typename CharType>
using output_adapter_t = std::shared_ptr<output_adapter_protocol<CharType>>;
/// output adapter for byte vectors
template<typename CharType>
template<typename CharType, typename AllocatorType = std::allocator<CharType>>
class output_vector_adapter : public output_adapter_protocol<CharType>
{
public:
explicit output_vector_adapter(std::vector<CharType>& vec) noexcept
explicit output_vector_adapter(std::vector<CharType, AllocatorType>& vec) noexcept
: v(vec)
{}
@ -13505,7 +13505,7 @@ class output_vector_adapter : public output_adapter_protocol<CharType>
}
private:
std::vector<CharType>& v;
std::vector<CharType, AllocatorType>& v;
};
#ifndef JSON_NO_IO
@ -13562,8 +13562,9 @@ template<typename CharType, typename StringType = std::basic_string<CharType>>
class output_adapter
{
public:
output_adapter(std::vector<CharType>& vec)
: oa(std::make_shared<output_vector_adapter<CharType>>(vec)) {}
template<typename AllocatorType = std::allocator<CharType>>
output_adapter(std::vector<CharType, AllocatorType>& vec)
: oa(std::make_shared<output_vector_adapter<CharType, AllocatorType>>(vec)) {}
#ifndef JSON_NO_IO
output_adapter(std::basic_ostream<CharType>& s)