On Fri, Jun 12, 2020 at 6:40 AM Niall Douglas via Boost <boost@lists.boost.org> wrote:
Zach, could you take this opportunity to compare your choice of string design with the string designs implemented by each of the following libraries please?
- LLVM strings, string refs, twines etc. - Abseil's strings, string pieces. - Folly's strings, string pieces and ranges. - CopperSpice's CsString.
There's also boost::json::string, which resembles std::string except that: * It is not a class template. * Most of the function definitions are in a library TU rather than a header. * It uses boost::json::storage_ptr instead of Allocator or std::pmr::memory_resource* * Some function signatures have been collapsed or adjusted for simplicity, in ways that would be desirable for std::string except that it would break ABI. json::string: <https://github.com/CPPAlliance/json/blob/f47fbeb1a54b832221a35c17912febb7a2c3a317/include/boost/json/string.hpp#L57> json::storage_ptr <http://vinniefalco.github.io/doc/json/json/usage/allocators.html> <http://vinniefalco.github.io/doc/json/json/ref/boost__json__storage_ptr.html> Regards