[/ Copyright (c) 2019 Vinnie Falco (vinnie.falco@gmail.com) Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) Official repository: https://github.com/cppalliance/json ] [/-----------------------------------------------------------------------------] [section Frequently Asked Questions] [variablelist [[ "Isn't simdjson faster?" ][ These libraries are not comparable. The output of the simdjson parser is a read-only structure. In other words, it can't be changed, and the only way to create one is by parsing a JSON string. On the other hand, Boost.JSON allows you to modify the container holding the parsed JSON, or even build a JSON document from scratch through the container interface. ]] [[ "I want to parse directly into my own data structures" ][ The purpose of this library is to enable algorithms which implement JSON functionality in their public interfaces to be interoperable, by providing a __value__ type that meets the bar for vocabulary type suitability. Parsing directly into a user defined type offers some advantages but is not the goal of the library. However, users who wish to parse directly into their own types may implement a custom handler for this purpose. ]] [[ "Why not use a standard __Allocator__?" ][ Using standard allocators would require that __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 __storage_ptr__ over __polymorphic_allocator__? ][ __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, __storage_ptr__ can function as an uncounted reference wrapper around a __memory_resource__. ]] [[ "Why __string__ instead of __std_string__?" ][ The string provided by the library uses the __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. __string__ also implements an improved interface that replaces extraneous overloads with ones that use __string_view__. ]] ] [endsect]