From faccc37d0d99a30c9de6fc4a68f683482a790638 Mon Sep 17 00:00:00 2001 From: Vitaliy Manushkin <agri@yandex-team.ru> Date: Sat, 10 Mar 2018 17:19:28 +0300 Subject: [PATCH] dump to alternate implementation of string, as defined in basic_json template --- include/nlohmann/detail/output/output_adapters.hpp | 10 +++++----- include/nlohmann/json.hpp | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/include/nlohmann/detail/output/output_adapters.hpp b/include/nlohmann/detail/output/output_adapters.hpp index fe9e1b36..aa6217ec 100644 --- a/include/nlohmann/detail/output/output_adapters.hpp +++ b/include/nlohmann/detail/output/output_adapters.hpp @@ -68,11 +68,11 @@ class output_stream_adapter : public output_adapter_protocol<CharType> }; /// output adapter for basic_string -template<typename CharType> +template<typename CharType, typename StringType = std::basic_string<CharType>> class output_string_adapter : public output_adapter_protocol<CharType> { public: - explicit output_string_adapter(std::basic_string<CharType>& s) : str(s) {} + explicit output_string_adapter(StringType& s) : str(s) {} void write_character(CharType c) override { @@ -85,10 +85,10 @@ class output_string_adapter : public output_adapter_protocol<CharType> } private: - std::basic_string<CharType>& str; + StringType& str; }; -template<typename CharType> +template<typename CharType, typename StringType = std::basic_string<CharType>> class output_adapter { public: @@ -98,7 +98,7 @@ class output_adapter output_adapter(std::basic_ostream<CharType>& s) : oa(std::make_shared<output_stream_adapter<CharType>>(s)) {} - output_adapter(std::basic_string<CharType>& s) + output_adapter(StringType& s) : oa(std::make_shared<output_string_adapter<CharType>>(s)) {} operator output_adapter_t<CharType>() diff --git a/include/nlohmann/json.hpp b/include/nlohmann/json.hpp index 91de782f..a4f2748d 100644 --- a/include/nlohmann/json.hpp +++ b/include/nlohmann/json.hpp @@ -1947,7 +1947,7 @@ class basic_json const bool ensure_ascii = false) const { string_t result; - serializer s(detail::output_adapter<char>(result), indent_char); + serializer s(detail::output_adapter<char, string_t>(result), indent_char); if (indent >= 0) {