20250818; version 2.115: * Added the psnum class for a precision specified numeric value to be assigned by operator=(). * Added a new overload of operator=() that takes a value_type value as a parameter. * Expanded push_back() and insert() to push/insert any type that can be passed to operator=(). 20250814; version 2.114: * Added new APIs, empty_array() and empty_object(). 20250723; version 2.113: * Added a new API, allkeys(). * Fixed a typedef shadowing issue. (For these changes, thanks to Viktor Latypov for the feedback and suggestions). 20250626; version 2.112: * Fixed the bug that caused a parse error when there was a space after a number. * Added ctl::json_error, for receiving the information of the reason and the position where a parse error occurred at. * Following the addition above, even if an error occurs during parsing, data that have been read in up to the error point are no longer discarded but kept. * Changed the return type of parse() that take two iterators as parameters. * Added overloads to stringify/to_string in which the destination container is specified as a parameter. * Added overload functions to str() and numstr() in which the destination container is specified as a parameter. * Replaced internal containers with this library's own ones. 20250420; version 2.111: * Replaced reinterpret_cast that had been used inappropriately with more proper code. 20240922; version 2.110: * Fixed the wrong mask value bug that caused the parser to interpret \uF800-\uFBFF as a first surrogate of surrogate pairs in addition to correct \uD800-\uDBFF. * Minor improvements. 20240806; version 2.109: * Now operator=() supports the boolean values, true and false. * Modified operator=() so that a descendant or ancestor of *this can be copied to *this, such as: js["a"]("b")("c") = js["a"]; js["a"] = js["a"]["b"]["c"]; 20240804; version 2.108: * Added an overload function to num() whose return type can be specified by the template argument. * Fixed a bug that caused a compilation error since version 2.106 when assignment of a string is done with operator=(). * Fixed a bug that caused a compilation error since version 2.107 when type() is called. 20240804; version 2.107: * Improved the performance of parsing. 20240802; version 2.106: * Improved the performance of stringify() and to_string(). * Added an overload function to stringify() and to_string() whose return type can be specified by the template argument. * Modified so that parsing and stringifying can be done with a string type different from the string type of the ctl::json classes. * Added new types, wjson, u16json, which handle a string as UTF-16. 20240730; version 2.105: * Fixed a problem of u8json that caused a compilation error. * Moved the base class into an internal namespace. 20240728; version 2.104: * Reduced memory usage. 20240727; version 2.103: * Improved the parser to avoid unnecessary copying of data. * Restricted the unescaping operation to being performed in parse() only. * Changed the name of the member function raw() to set_str(). 20240721; version 2.102: * Fixed so that escape sequences would not be interpreted when outputting a JSON. 20240720; version 2.101: * Added the include guard that was accidentally missing. 20240616; version 2.100: * The first released version.