1
0
mirror of https://github.com/nlohmann/json.git synced 2025-07-28 12:02:00 +03:00

Allow allocators for output_vector_adapter (#2989)

* ♻️ allow allocators for vectors

*  add regression tests
This commit is contained in:
Niels Lohmann
2021-09-12 18:55:47 +02:00
committed by GitHub
parent 58b83b71dc
commit 0b345b20c8
3 changed files with 28 additions and 10 deletions

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)