require that <<ref_value>> be declared as a class template, which would impose an additional compilation burden. By avoiding the template, most of the function definitions in the library can be excluded from the headers and emitted in a separate static or dynamic library.
"Why use <<ref_storage_ptr>> over {ref_polymorphic_allocator}?:: {ref_polymorphic_allocator} treats the memory resource as a reference with respect to ownership. Boost.JSON uses a reference counted smart pointer container to simplify the lifetime management of memory resources. In addition to being reference counted, <<ref_storage_ptr>> can function as an uncounted reference wrapper around a {ref_memory_resource}.
library uses the <<ref_storage_ptr>> allocator model, has the same interface on all C++ versions, and has an optimized class layout to keep the size of JSON values small. <<ref_string>> also implements an improved interface that replaces extraneous overloads with ones that use <<ref_string_view>>.