From 4e9ff03af5d30505accbb9ed641f4fc28fa14c6a Mon Sep 17 00:00:00 2001 From: "Jake S. Del Mastro" Date: Fri, 12 Dec 2025 17:50:52 -0500 Subject: [PATCH] Make it possible to provide custom serializers for range types ( (#2550) If you provide a custom serializer for range types it is currently never used due to the requires clause for string_builder::append with ranges is overly broad --- include/simdjson/generic/ondemand/json_string_builder-inl.h | 2 +- include/simdjson/generic/ondemand/json_string_builder.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/include/simdjson/generic/ondemand/json_string_builder-inl.h b/include/simdjson/generic/ondemand/json_string_builder-inl.h index e26e499ff..172adf143 100644 --- a/include/simdjson/generic/ondemand/json_string_builder-inl.h +++ b/include/simdjson/generic/ondemand/json_string_builder-inl.h @@ -534,7 +534,7 @@ simdjson_inline void string_builder::append(const T &value) { #if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS // Support for range-based appending (std::ranges::view, etc.) template - requires(!std::is_convertible::value) + requires(!std::is_convertible::value && !require_custom_serialization) simdjson_inline void string_builder::append(const R &range) noexcept { auto it = std::ranges::begin(range); auto end = std::ranges::end(range); diff --git a/include/simdjson/generic/ondemand/json_string_builder.h b/include/simdjson/generic/ondemand/json_string_builder.h index aa1c0449b..275e91114 100644 --- a/include/simdjson/generic/ondemand/json_string_builder.h +++ b/include/simdjson/generic/ondemand/json_string_builder.h @@ -176,7 +176,7 @@ public: #if SIMDJSON_SUPPORTS_RANGES && SIMDJSON_SUPPORTS_CONCEPTS // Support for range-based appending (std::ranges::view, etc.) template -requires (!std::is_convertible::value) +requires (!std::is_convertible::value && !require_custom_serialization) simdjson_inline void append(const R &range) noexcept; #endif /** @@ -301,4 +301,4 @@ simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t i } // namespace simdjson -#endif // SIMDJSON_GENERIC_STRING_BUILDER_H \ No newline at end of file +#endif // SIMDJSON_GENERIC_STRING_BUILDER_H