Merge branch 'release/3.0.0' into develop
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1ad03e6..334dec2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -4,7 +4,7 @@
 ## PROJECT
 ## name and version
 ##
-project(nlohmann_json VERSION 2.1.1 LANGUAGES CXX)
+project(nlohmann_json VERSION 3.0.0 LANGUAGES CXX)
 
 ##
 ## OPTIONS
diff --git a/ChangeLog.md b/ChangeLog.md
index 76244c5..9db2783 100644
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,6 +1,402 @@
 # Change Log
 All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/).
 
+## [v3.0.0](https://github.com/nlohmann/json/releases/tag/v3.0.0) (2017-12-17)
+[Full Changelog](https://github.com/nlohmann/json/compare/v2.1.1...v3.0.0)
+
+- unicode strings [\#878](https://github.com/nlohmann/json/issues/878)
+- Visual Studio 2017 15.5 C++17 std::allocator deprecations [\#872](https://github.com/nlohmann/json/issues/872)
+- Typo "excpetion" [\#869](https://github.com/nlohmann/json/issues/869)
+- Explicit array example in README.md incorrect [\#867](https://github.com/nlohmann/json/issues/867)
+- why don't you release this from Feb. ? [\#865](https://github.com/nlohmann/json/issues/865)
+- json::parse throws std::invalid\_argument when processing string generated by json::dump\(\) [\#863](https://github.com/nlohmann/json/issues/863)
+- code analysis: potential bug? [\#859](https://github.com/nlohmann/json/issues/859)
+- MSVC2017, 15.5 new issues.   [\#857](https://github.com/nlohmann/json/issues/857)
+- very basic: fetching string value/content without quotes [\#853](https://github.com/nlohmann/json/issues/853)
+- Ambiguous function call to get with pointer type and constant json object in VS2015 \(15.4.4\) [\#852](https://github.com/nlohmann/json/issues/852)
+- How to put  object in the array as a member? [\#850](https://github.com/nlohmann/json/issues/850)
+- misclick, please ignore [\#849](https://github.com/nlohmann/json/issues/849)
+- Make XML great again. [\#847](https://github.com/nlohmann/json/issues/847)
+- Converting to array not working [\#843](https://github.com/nlohmann/json/issues/843)
+- Iteration weirdness [\#842](https://github.com/nlohmann/json/issues/842)
+- Use reference or pointer as Object value [\#841](https://github.com/nlohmann/json/issues/841)
+- Ambiguity in parsing nested maps [\#840](https://github.com/nlohmann/json/issues/840)
+- could not find from\_json\(\) method in T's namespace [\#839](https://github.com/nlohmann/json/issues/839)
+- Incorrect parse error with binary data in keys? [\#838](https://github.com/nlohmann/json/issues/838)
+- using dump\(\) when std::wstring is StringType with VS2017 [\#836](https://github.com/nlohmann/json/issues/836)
+- Show the path of the currently parsed value when an error occurs [\#835](https://github.com/nlohmann/json/issues/835)
+- Repetitive data type while reading [\#833](https://github.com/nlohmann/json/issues/833)
+- Stack-overflow \(OSS-Fuzz 4234\) [\#832](https://github.com/nlohmann/json/issues/832)
+- Storing multiple types inside map [\#831](https://github.com/nlohmann/json/issues/831)
+- Application terminating [\#830](https://github.com/nlohmann/json/issues/830)
+- Missing CMake hunter package? [\#828](https://github.com/nlohmann/json/issues/828)
+- std::map\<std::string, std::string\> from json object yields C2665: 'std::pair\<const \_Kty,\_Ty\>::pair': none of the 2 overloads could convert all the argument types [\#827](https://github.com/nlohmann/json/issues/827)
+- object.dump gives quoted string, want to use .dump\(\) to generate javascripts. [\#826](https://github.com/nlohmann/json/issues/826)
+- Assertion failed on \["NoExistKey"\] of an not existing key of const json& [\#825](https://github.com/nlohmann/json/issues/825)
+- vs2015 error : static member will remain uninitialized at runtime but use in constant-expressions is supported [\#824](https://github.com/nlohmann/json/issues/824)
+- Code Checking Warnings from json.hpp on VS2017 Community [\#821](https://github.com/nlohmann/json/issues/821)
+- Missing iostream in try online [\#820](https://github.com/nlohmann/json/issues/820)
+- Floating point value loses decimal point during dump [\#818](https://github.com/nlohmann/json/issues/818)
+- Conan package for the library [\#817](https://github.com/nlohmann/json/issues/817)
+- stream error  [\#815](https://github.com/nlohmann/json/issues/815)
+- Link error when using find\(\) on the latest commit [\#814](https://github.com/nlohmann/json/issues/814)
+- ABI issue with json object between 2 shared libraries [\#813](https://github.com/nlohmann/json/issues/813)
+- scan\_string\(\) return token\_type::parse\_error; when parse ansi file [\#812](https://github.com/nlohmann/json/issues/812)
+- segfault when using fifo\_map with json [\#810](https://github.com/nlohmann/json/issues/810)
+- This shit is shit  [\#809](https://github.com/nlohmann/json/issues/809)
+- \_finite and \_isnan are no members of "std" [\#808](https://github.com/nlohmann/json/issues/808)
+- how to print out the line which causing exception? [\#806](https://github.com/nlohmann/json/issues/806)
+- {} uses copy constructor, while = does not [\#805](https://github.com/nlohmann/json/issues/805)
+- json.hpp:8955: multiple definition of function that is not defined twice or more. [\#804](https://github.com/nlohmann/json/issues/804)
+- \[question\] to\_json for base and derived class [\#803](https://github.com/nlohmann/json/issues/803)
+- Misleading error message - unexpected '"' - on incorrect utf-8 symbol [\#802](https://github.com/nlohmann/json/issues/802)
+- json data = std::string\_view\("hi"\); doesn't work? [\#801](https://github.com/nlohmann/json/issues/801)
+- Thread safety of parse\(\) [\#800](https://github.com/nlohmann/json/issues/800)
+- Numbers as strings [\#799](https://github.com/nlohmann/json/issues/799)
+- Tests failing on arm [\#797](https://github.com/nlohmann/json/issues/797)
+- Using your library \(without modification\) in another library [\#796](https://github.com/nlohmann/json/issues/796)
+- Iterating over sub-object [\#794](https://github.com/nlohmann/json/issues/794)
+- how to get the json object again from which printed by the method of dump\(\) [\#792](https://github.com/nlohmann/json/issues/792)
+- ppa to include source [\#791](https://github.com/nlohmann/json/issues/791)
+- Different include paths in macOS and Ubuntu [\#790](https://github.com/nlohmann/json/issues/790)
+- Missing break after line 12886 in switch/case [\#789](https://github.com/nlohmann/json/issues/789)
+- All unit tests fail? [\#787](https://github.com/nlohmann/json/issues/787)
+- More use of move semantics in deserialization [\#786](https://github.com/nlohmann/json/issues/786)
+- warning C4706 - Visual Studio 2017 \(/W4\) [\#784](https://github.com/nlohmann/json/issues/784)
+- Compile error in clang 5.0 [\#782](https://github.com/nlohmann/json/issues/782)
+- Error Installing appium\_lib with Ruby v2.4.2 Due to JSON [\#781](https://github.com/nlohmann/json/issues/781)
+- ::get\<int\>\(\) fails in new\(er\) release \[MSVC\] [\#780](https://github.com/nlohmann/json/issues/780)
+- Type Conversion [\#779](https://github.com/nlohmann/json/issues/779)
+- Segfault on nested parsing [\#778](https://github.com/nlohmann/json/issues/778)
+- Build warnings: shadowing exception id [\#776](https://github.com/nlohmann/json/issues/776)
+- multi-level JSON support. [\#775](https://github.com/nlohmann/json/issues/775)
+- SIGABRT on dump\(\) [\#773](https://github.com/nlohmann/json/issues/773)
+- \[Question\] Custom StringType template parameter \(possibility for a KeyType template parameter\) [\#772](https://github.com/nlohmann/json/issues/772)
+- constexpr ALL the Things! [\#771](https://github.com/nlohmann/json/issues/771)
+- error: ‘BasicJsonType’ in namespace ‘::’ does not name a type [\#770](https://github.com/nlohmann/json/issues/770)
+- Program calls abort function [\#769](https://github.com/nlohmann/json/issues/769)
+- \[Question\] Floating point resolution config during dump\(\) ? [\#768](https://github.com/nlohmann/json/issues/768)
+- make check - no test ran [\#767](https://github.com/nlohmann/json/issues/767)
+- The library cannot work properly with custom allocator based containers [\#766](https://github.com/nlohmann/json/issues/766)
+- Documentation or feature request. [\#763](https://github.com/nlohmann/json/issues/763)
+- warnings in msvc about mix/max macro while windows.h is used in the project [\#762](https://github.com/nlohmann/json/issues/762)
+- std::signbit ambiguous [\#761](https://github.com/nlohmann/json/issues/761)
+- How to use value for std::experimental::optional type? [\#760](https://github.com/nlohmann/json/issues/760)
+- Cannot load json file properly [\#759](https://github.com/nlohmann/json/issues/759)
+- Compilation error with unordered\_map\< int, int \> [\#758](https://github.com/nlohmann/json/issues/758)
+- CBOR string [\#757](https://github.com/nlohmann/json/issues/757)
+- Proposal: out\_of\_range should be a subclass of std::out\_of\_range [\#756](https://github.com/nlohmann/json/issues/756)
+- Compiling with icpc [\#755](https://github.com/nlohmann/json/issues/755)
+- Getter is setting the value to null if the key does not exist [\#754](https://github.com/nlohmann/json/issues/754)
+- parsing works sometimes and crashes others [\#752](https://github.com/nlohmann/json/issues/752)
+- Static\_assert failed "incompatible pointer type" with Xcode [\#751](https://github.com/nlohmann/json/issues/751)
+- user-defined literal operator not found [\#750](https://github.com/nlohmann/json/issues/750)
+- getting clean string from it.key\(\) [\#748](https://github.com/nlohmann/json/issues/748)
+- Best method for exploring and obtaining values of nested json objects when the names are not known beforehand? [\#747](https://github.com/nlohmann/json/issues/747)
+- null char at the end of string [\#746](https://github.com/nlohmann/json/issues/746)
+- Incorrect sample for operator \>\> in docs [\#745](https://github.com/nlohmann/json/issues/745)
+- User-friendly documentation [\#744](https://github.com/nlohmann/json/issues/744)
+- Retrieve all values that match a json path [\#743](https://github.com/nlohmann/json/issues/743)
+- Compilation issue with gcc 7.2 [\#742](https://github.com/nlohmann/json/issues/742)
+- CMake target nlohmann\_json does not have src into its interface includes [\#741](https://github.com/nlohmann/json/issues/741)
+- Error when serializing empty json: type must be string, but is object [\#740](https://github.com/nlohmann/json/issues/740)
+- Conversion error for std::map\<int, std::string\>  [\#739](https://github.com/nlohmann/json/issues/739)
+- Dumping Json to file as array [\#738](https://github.com/nlohmann/json/issues/738)
+- nesting json objects [\#737](https://github.com/nlohmann/json/issues/737)
+- where to find general help? [\#736](https://github.com/nlohmann/json/issues/736)
+- Compilation Error on Clang 5.0 Upgrade [\#735](https://github.com/nlohmann/json/issues/735)
+- Compilation error with std::map\<std::string, std::string\> on vs 2015 [\#734](https://github.com/nlohmann/json/issues/734)
+- Benchmarks for Binary formats [\#733](https://github.com/nlohmann/json/issues/733)
+- Move test blobs to a submodule? [\#732](https://github.com/nlohmann/json/issues/732)
+- Support \n symbols in json string. [\#731](https://github.com/nlohmann/json/issues/731)
+- Project's name is too generic and hard to search for [\#730](https://github.com/nlohmann/json/issues/730)
+- Visual Studio 2015 IntelliTrace problems [\#729](https://github.com/nlohmann/json/issues/729)
+- How to erase nested objects inside other objects? [\#728](https://github.com/nlohmann/json/issues/728)
+- How to prevent alphabetical sorting of data? [\#727](https://github.com/nlohmann/json/issues/727)
+- Serialization for CBOR [\#726](https://github.com/nlohmann/json/issues/726)
+- Using json Object as value in a map [\#725](https://github.com/nlohmann/json/issues/725)
+- std::regex and nlohmann::json value [\#724](https://github.com/nlohmann/json/issues/724)
+- Warnings when compiling with VisualStudio 2015 [\#723](https://github.com/nlohmann/json/issues/723)
+- Has this lib the unicode \(wstring\) support? [\#722](https://github.com/nlohmann/json/issues/722)
+- When will be 3.0 in master? [\#721](https://github.com/nlohmann/json/issues/721)
+- Determine the type from error message. [\#720](https://github.com/nlohmann/json/issues/720)
+- Compile-Error C2100 \(MS VS2015\) in line 887 json.hpp [\#719](https://github.com/nlohmann/json/issues/719)
+- from\_json not working for boost::optional example [\#718](https://github.com/nlohmann/json/issues/718)
+- about from\_json and to\_json function [\#717](https://github.com/nlohmann/json/issues/717)
+- How to deserialize array with derived objects [\#716](https://github.com/nlohmann/json/issues/716)
+- How to detect parse failure? [\#715](https://github.com/nlohmann/json/issues/715)
+- Parse throw std::ios\_base::failure exception when failbit set to true [\#714](https://github.com/nlohmann/json/issues/714)
+- Is there a way of format just making a pretty print without changing the key's orders ? [\#713](https://github.com/nlohmann/json/issues/713)
+- Serialization of array of not same model items [\#712](https://github.com/nlohmann/json/issues/712)
+- pointer to json parse vector [\#711](https://github.com/nlohmann/json/issues/711)
+- Gtest SEH Exception [\#709](https://github.com/nlohmann/json/issues/709)
+- broken from\_json implementation for pair and tuple  [\#707](https://github.com/nlohmann/json/issues/707)
+- Unevaluated lambda in assert breaks gcc 7 build [\#705](https://github.com/nlohmann/json/issues/705)
+- Issues when adding values to firebase database [\#704](https://github.com/nlohmann/json/issues/704)
+- Floating point equality - revisited [\#703](https://github.com/nlohmann/json/issues/703)
+- Conversion from valarray\<double\> to json fails to build [\#702](https://github.com/nlohmann/json/issues/702)
+- internal compiler error \(gcc7\)  [\#701](https://github.com/nlohmann/json/issues/701)
+- One build system to rule them all [\#698](https://github.com/nlohmann/json/issues/698)
+- Generated nlohmann\_jsonConfig.cmake does not set JSON\_INCLUDE\_DIR [\#695](https://github.com/nlohmann/json/issues/695)
+- support the Chinese language in json string [\#694](https://github.com/nlohmann/json/issues/694)
+- NaN problem within develop branch [\#693](https://github.com/nlohmann/json/issues/693)
+- Please post example of specialization for boost::filesystem [\#692](https://github.com/nlohmann/json/issues/692)
+- Impossible to do an array of composite objects [\#691](https://github.com/nlohmann/json/issues/691)
+- How to save json to file? [\#690](https://github.com/nlohmann/json/issues/690)
+- my simple json parser [\#689](https://github.com/nlohmann/json/issues/689)
+- problem with new struct parsing syntax [\#688](https://github.com/nlohmann/json/issues/688)
+- Parse error while parse the json string contains  UTF 8 encoded document bytes string [\#684](https://github.com/nlohmann/json/issues/684)
+- \[question\] how to get a string value by pointer [\#683](https://github.com/nlohmann/json/issues/683)
+- create json object from string variable [\#681](https://github.com/nlohmann/json/issues/681)
+- adl\_serializer and CRTP [\#680](https://github.com/nlohmann/json/issues/680)
+- Is there a way to control the precision of serialized floating point numbers? [\#677](https://github.com/nlohmann/json/issues/677)
+- Is there a way to get the path of a value? [\#676](https://github.com/nlohmann/json/issues/676)
+- Could the parser locate errors to line? [\#675](https://github.com/nlohmann/json/issues/675)
+- There is performance inefficiency found by coverity tool json2.1.1/include/nlohmann/json.hpp [\#673](https://github.com/nlohmann/json/issues/673)
+- include problem, when cmake on osx [\#672](https://github.com/nlohmann/json/issues/672)
+- Operator= ambiguous in C++1z and GCC 7.1.1 [\#670](https://github.com/nlohmann/json/issues/670)
+- should't the cmake install target be to nlohman/json.hpp [\#668](https://github.com/nlohmann/json/issues/668)
+- deserialise from `std::vector` [\#667](https://github.com/nlohmann/json/issues/667)
+- How to iterate? [\#665](https://github.com/nlohmann/json/issues/665)
+- could this json lib work on windows? [\#664](https://github.com/nlohmann/json/issues/664)
+- How does from\_json work? [\#662](https://github.com/nlohmann/json/issues/662)
+- insert\(or merge\) object should replace same key , not ignore [\#661](https://github.com/nlohmann/json/issues/661)
+- Why is an object ordering values by Alphabetical Order?  [\#660](https://github.com/nlohmann/json/issues/660)
+- Parse method doesn't handle newlines. [\#659](https://github.com/nlohmann/json/issues/659)
+- Compilation "note" on GCC 6 ARM [\#658](https://github.com/nlohmann/json/issues/658)
+- Adding additional push\_back/operator+= rvalue overloads for JSON object [\#657](https://github.com/nlohmann/json/issues/657)
+- dump's parameter "ensure\_ascii" creates too long sequences [\#656](https://github.com/nlohmann/json/issues/656)
+- Question: parsing `void \*` [\#655](https://github.com/nlohmann/json/issues/655)
+- how should I check a string is valid JSON string ? [\#653](https://github.com/nlohmann/json/issues/653)
+- Question: thread safety of read only accesses [\#651](https://github.com/nlohmann/json/issues/651)
+- Eclipse: Method 'size' could not be resolved [\#649](https://github.com/nlohmann/json/issues/649)
+- Update/Add object fields [\#648](https://github.com/nlohmann/json/issues/648)
+- No exception raised for Out Of Range input of numbers [\#647](https://github.com/nlohmann/json/issues/647)
+- Package Name [\#646](https://github.com/nlohmann/json/issues/646)
+- What is the meaning of operator\[\]\(T\* key\) [\#645](https://github.com/nlohmann/json/issues/645)
+- Which is the correct way to json objects as parameters to functions? [\#644](https://github.com/nlohmann/json/issues/644)
+- Method to get string representations of values [\#642](https://github.com/nlohmann/json/issues/642)
+-  CBOR serialization of a given JSON value does not serialize [\#641](https://github.com/nlohmann/json/issues/641)
+- Are we forced to use "-fexceptions" flag in android ndk project [\#640](https://github.com/nlohmann/json/issues/640)
+- Comparison of objects containing floats [\#639](https://github.com/nlohmann/json/issues/639)
+- 'localeconv' is not supported by NDK for SDK  \<=20 [\#638](https://github.com/nlohmann/json/issues/638)
+- \[Question\] cLion integration [\#637](https://github.com/nlohmann/json/issues/637)
+- How to construct an iteratable usage in nlohmann json? [\#636](https://github.com/nlohmann/json/issues/636)
+- \[Question\] copy assign json-container to vector [\#635](https://github.com/nlohmann/json/issues/635)
+- Get size without .dump\(\) [\#634](https://github.com/nlohmann/json/issues/634)
+- Segmentation fault when parsing invalid json file [\#633](https://github.com/nlohmann/json/issues/633)
+- How to serialize from json to vector\<customType\>? [\#632](https://github.com/nlohmann/json/issues/632)
+- no member named 'thousands\_sep' in 'lconv' [\#631](https://github.com/nlohmann/json/issues/631)
+- \[Question\] Any fork for \(the unsupported\) Visual Studio 2012 version? [\#628](https://github.com/nlohmann/json/issues/628)
+- Dependency injection in serializer [\#627](https://github.com/nlohmann/json/issues/627)
+- from\_json for std::array [\#625](https://github.com/nlohmann/json/issues/625)
+- Discussion: How to structure the parsing function families [\#623](https://github.com/nlohmann/json/issues/623)
+- Question: How to erase subtree [\#622](https://github.com/nlohmann/json/issues/622)
+- Insertion into nested json field [\#621](https://github.com/nlohmann/json/issues/621)
+- \[Question\] When using this as git submodule, will it clone the whole thing include test data and benchmark? [\#620](https://github.com/nlohmann/json/issues/620)
+- Question: return static json object from function [\#618](https://github.com/nlohmann/json/issues/618)
+- icc16 error [\#617](https://github.com/nlohmann/json/issues/617)
+- \[-Wdeprecated-declarations\] in row `j \>\> ss;` in file `json.hpp:7405:26` and FAILED unit tests with MinGWx64! [\#616](https://github.com/nlohmann/json/issues/616)
+- to\_json for pairs, tuples [\#614](https://github.com/nlohmann/json/issues/614)
+- Using uninitialized memory 'buf' in line 11173 v2.1.1? [\#613](https://github.com/nlohmann/json/issues/613)
+- How to parse multiple same Keys of JSON and save them? [\#612](https://github.com/nlohmann/json/issues/612)
+- "Multiple declarations" error when using types defined with `typedef` [\#611](https://github.com/nlohmann/json/issues/611)
+- 2.1.1+ breaks compilation of shared\_ptr\<json\> == 0 [\#610](https://github.com/nlohmann/json/issues/610)
+- a bug of inheritance ?  [\#608](https://github.com/nlohmann/json/issues/608)
+- std::map key conversion with to\_json [\#607](https://github.com/nlohmann/json/issues/607)
+- json.hpp:6384:62: error: wrong number of template arguments \(1, should be 2\) [\#606](https://github.com/nlohmann/json/issues/606)
+- Incremental parsing: Where's the push version? [\#605](https://github.com/nlohmann/json/issues/605)
+- Is there a way to validate the structure of a json object ? [\#604](https://github.com/nlohmann/json/issues/604)
+- \[Question\] Issue when using Appveyor when compiling library [\#603](https://github.com/nlohmann/json/issues/603)
+- BOM not skipped when using json:parse\(iterator\) [\#602](https://github.com/nlohmann/json/issues/602)
+- Use of the binary type in CBOR and Message Pack [\#601](https://github.com/nlohmann/json/issues/601)
+- Newbie issue: how does one convert a map in Json back to std::map? [\#600](https://github.com/nlohmann/json/issues/600)
+- Plugin system [\#599](https://github.com/nlohmann/json/issues/599)
+- Feature request: Comments [\#597](https://github.com/nlohmann/json/issues/597)
+- Using custom types for scalars? [\#596](https://github.com/nlohmann/json/issues/596)
+- Issues with the arithmetic in iterator and reverse iterator [\#593](https://github.com/nlohmann/json/issues/593)
+- not enough examples [\#592](https://github.com/nlohmann/json/issues/592)
+- in-class initialization for type 'const T' is not yet implemented [\#591](https://github.com/nlohmann/json/issues/591)
+- compiling with gcc 7 -\> error on bool operator \< [\#590](https://github.com/nlohmann/json/issues/590)
+- Parsing from stream leads to an array [\#589](https://github.com/nlohmann/json/issues/589)
+- Buggy support for binary string data [\#587](https://github.com/nlohmann/json/issues/587)
+- C++17's ambiguous conversion [\#586](https://github.com/nlohmann/json/issues/586)
+- How does the messagepack encoding/decoding compare to msgpack-cpp in terms of performance? [\#585](https://github.com/nlohmann/json/issues/585)
+- is it possible to check existence of a value deep in hierarchy? [\#584](https://github.com/nlohmann/json/issues/584)
+- loading from a stream and exceptions [\#582](https://github.com/nlohmann/json/issues/582)
+- Visual Studio seems not to have all min\(\) function versions [\#581](https://github.com/nlohmann/json/issues/581)
+- Supporting of the json schema [\#580](https://github.com/nlohmann/json/issues/580)
+- Stack-overflow \(OSS-Fuzz 1444\) [\#577](https://github.com/nlohmann/json/issues/577)
+- Heap-buffer-overflow \(OSS-Fuzz 1400\) [\#575](https://github.com/nlohmann/json/issues/575)
+- JSON escape quotes [\#574](https://github.com/nlohmann/json/issues/574)
+- error: static\_assert failed [\#573](https://github.com/nlohmann/json/issues/573)
+- Storing floats, and round trip serialisation/deserialisation diffs [\#572](https://github.com/nlohmann/json/issues/572)
+- JSON.getLong produces inconsistent results [\#571](https://github.com/nlohmann/json/issues/571)
+- Request: Object.at\(\) with default return value [\#570](https://github.com/nlohmann/json/issues/570)
+- Internal structure gets corrupted while parsing [\#569](https://github.com/nlohmann/json/issues/569)
+- create template \<typename Iter\> basic\_json from\_cbor\(Iter begin, Iter end\) [\#568](https://github.com/nlohmann/json/issues/568)
+- Need to improve ignores.. [\#567](https://github.com/nlohmann/json/issues/567)
+- Conan.io [\#566](https://github.com/nlohmann/json/issues/566)
+- contradictory documentation regarding json::find [\#565](https://github.com/nlohmann/json/issues/565)
+- Unexpected '\"' in middle of array [\#564](https://github.com/nlohmann/json/issues/564)
+- Support parse std::pair to Json object [\#563](https://github.com/nlohmann/json/issues/563)
+- json and Microsoft Visual c++ Compiler Nov 2012 CTP [\#562](https://github.com/nlohmann/json/issues/562)
+- from\_json declaration order and exceptions [\#561](https://github.com/nlohmann/json/issues/561)
+- Tip: Don't upgrade to VS2017 if using json initializer list constructs [\#559](https://github.com/nlohmann/json/issues/559)
+- parse error - unexpected end of input [\#558](https://github.com/nlohmann/json/issues/558)
+- Cant modify existing numbers inside a json object [\#557](https://github.com/nlohmann/json/issues/557)
+- Minimal repository \(current size very large\) [\#556](https://github.com/nlohmann/json/issues/556)
+- Better support for SAX style serialize and deserialize in new version? [\#554](https://github.com/nlohmann/json/issues/554)
+- Cannot convert from json array to std::array [\#553](https://github.com/nlohmann/json/issues/553)
+- Do not define an unnamed namespace in a header file \(DCL59-CPP\) [\#552](https://github.com/nlohmann/json/issues/552)
+- Parse error on known good json file [\#551](https://github.com/nlohmann/json/issues/551)
+- Warning on Intel compiler \(icc 17\) [\#550](https://github.com/nlohmann/json/issues/550)
+- multiple versions of 'vsnprintf' [\#549](https://github.com/nlohmann/json/issues/549)
+- illegal indirection [\#548](https://github.com/nlohmann/json/issues/548)
+- Ambiguous compare operators with clang-5.0 [\#547](https://github.com/nlohmann/json/issues/547)
+- Using tsl::ordered\_map [\#546](https://github.com/nlohmann/json/issues/546)
+- Compiler support errors are inconvenient [\#544](https://github.com/nlohmann/json/issues/544)
+- Head Elements Sorting [\#543](https://github.com/nlohmann/json/issues/543)
+- Duplicate symbols error happens while to\_json/from\_json method implemented inside entity definition header file [\#542](https://github.com/nlohmann/json/issues/542)
+- consider adding a bool json::is\_valid\(std::string const&\) non-member function [\#541](https://github.com/nlohmann/json/issues/541)
+- Help request [\#539](https://github.com/nlohmann/json/issues/539)
+- How to deal with missing keys in `from\_json`? [\#538](https://github.com/nlohmann/json/issues/538)
+- recursive from\_msgpack implementation will stack overflow [\#537](https://github.com/nlohmann/json/issues/537)
+- Exception objects must be nothrow copy constructible \(ERR60-CPP\) [\#531](https://github.com/nlohmann/json/issues/531)
+- Support for multiple root elements [\#529](https://github.com/nlohmann/json/issues/529)
+- Port has\_shape from dropbox/json11 [\#528](https://github.com/nlohmann/json/issues/528)
+- dump\_float: truncation from ptrdiff\_t to long [\#527](https://github.com/nlohmann/json/issues/527)
+- Make exception base class visible in basic\_json [\#525](https://github.com/nlohmann/json/issues/525)
+- msgpack unit test failures on ppc64 arch [\#524](https://github.com/nlohmann/json/issues/524)
+- How about split the implementation out, and only leave the interface? [\#523](https://github.com/nlohmann/json/issues/523)
+- VC++2017 not enough actual parameters for macro 'max' [\#522](https://github.com/nlohmann/json/issues/522)
+- crash on empty ifstream [\#521](https://github.com/nlohmann/json/issues/521)
+- Suggestion: Support tabs for indentation when serializing to stream. [\#520](https://github.com/nlohmann/json/issues/520)
+- Abrt in get\_number \(OSS-Fuzz 885\) [\#519](https://github.com/nlohmann/json/issues/519)
+- Abrt on unknown address \(OSS-Fuzz 884\) [\#518](https://github.com/nlohmann/json/issues/518)
+- Stack-overflow \(OSS-Fuzz 869\) [\#517](https://github.com/nlohmann/json/issues/517)
+- Assertion error \(OSS-Fuzz 868\) [\#516](https://github.com/nlohmann/json/issues/516)
+- NaN to json and back [\#515](https://github.com/nlohmann/json/issues/515)
+- Comparison of NaN [\#514](https://github.com/nlohmann/json/issues/514)
+- why it's not possible to serialize c++11 enums directly [\#513](https://github.com/nlohmann/json/issues/513)
+- clang compile error: use of overloaded operator '\<=' is ambiguous   with \(nlohmann::json{{"a", 5}}\)\["a"\] \<= 10 [\#512](https://github.com/nlohmann/json/issues/512)
+- Why not also look inside the type for \(static\) to\_json and from\_json funtions? [\#511](https://github.com/nlohmann/json/issues/511)
+- Parser issues [\#509](https://github.com/nlohmann/json/issues/509)
+- I may not understand [\#507](https://github.com/nlohmann/json/issues/507)
+- VS2017 min / max problem for 2.1.1 [\#506](https://github.com/nlohmann/json/issues/506)
+- CBOR/MessagePack is not read until the end [\#505](https://github.com/nlohmann/json/issues/505)
+- Assertion error \(OSS-Fuzz 856\) [\#504](https://github.com/nlohmann/json/issues/504)
+- Return position in parse error exceptions [\#503](https://github.com/nlohmann/json/issues/503)
+- conversion from/to C array is not supported [\#502](https://github.com/nlohmann/json/issues/502)
+- error C2338: could not find to\_json\(\) method in T's namespace [\#501](https://github.com/nlohmann/json/issues/501)
+- Test suite fails in en\_GB.UTF-8 [\#500](https://github.com/nlohmann/json/issues/500)
+- cannot use operator\[\] with number [\#499](https://github.com/nlohmann/json/issues/499)
+- consider using \_\_cpp\_exceptions and/or \_\_EXCEPTIONS to disable/enable exception support [\#498](https://github.com/nlohmann/json/issues/498)
+- Stack-overflow \(OSS-Fuzz issue 814\) [\#497](https://github.com/nlohmann/json/issues/497)
+- Using in Unreal Engine - handling custom types conversion [\#495](https://github.com/nlohmann/json/issues/495)
+- Conversion from vector\<bool\> to json fails to build [\#494](https://github.com/nlohmann/json/issues/494)
+- fill\_line\_buffer incorrectly tests m\_stream for eof but not fail or bad bits [\#493](https://github.com/nlohmann/json/issues/493)
+- Compiling with \_GLIBCXX\_DEBUG yields iterator-comparison warnings during tests [\#492](https://github.com/nlohmann/json/issues/492)
+- crapy interface [\#491](https://github.com/nlohmann/json/issues/491)
+- Fix Visual Studo 2013 builds. [\#490](https://github.com/nlohmann/json/issues/490)
+- Failed to compile with -D\_GLIBCXX\_PARALLEL [\#489](https://github.com/nlohmann/json/issues/489)
+- Input several field with the same name [\#488](https://github.com/nlohmann/json/issues/488)
+- read in .json file yields strange sizes [\#487](https://github.com/nlohmann/json/issues/487)
+- json::value\_t can't be a map's key type in VC++ 2015 [\#486](https://github.com/nlohmann/json/issues/486)
+- Using fifo\_map [\#485](https://github.com/nlohmann/json/issues/485)
+- Cannot get float pointer for value stored as `0` [\#484](https://github.com/nlohmann/json/issues/484)
+- byte string support [\#483](https://github.com/nlohmann/json/issues/483)
+- For a header-only library you have to clone 214MB [\#482](https://github.com/nlohmann/json/issues/482)
+- https://github.com/nlohmann/json\#execute-unit-tests [\#481](https://github.com/nlohmann/json/issues/481)
+- Remove deprecated constructor basic\_json\(std::istream&\) [\#480](https://github.com/nlohmann/json/issues/480)
+- writing the binary json file? [\#479](https://github.com/nlohmann/json/issues/479)
+- CBOR/MessagePack from uint8\_t \* and size [\#478](https://github.com/nlohmann/json/issues/478)
+- Streaming binary representations  [\#477](https://github.com/nlohmann/json/issues/477)
+- Reuse memory in to\_cbor and to\_msgpack functions [\#476](https://github.com/nlohmann/json/issues/476)
+- Error Using JSON Library with arrays C++ [\#475](https://github.com/nlohmann/json/issues/475)
+- Moving forward to version 3.0.0 [\#474](https://github.com/nlohmann/json/issues/474)
+- Inconsistent behavior in conversion to array type [\#473](https://github.com/nlohmann/json/issues/473)
+- Create a \[key:member\_pointer\] map to ease parsing custom types [\#471](https://github.com/nlohmann/json/issues/471)
+- MSVC 2015 update 2 [\#469](https://github.com/nlohmann/json/issues/469)
+- VS2017 implicit to std::string conversion fix. [\#464](https://github.com/nlohmann/json/issues/464)
+- How to make sure a string or string literal is a valid JSON? [\#458](https://github.com/nlohmann/json/issues/458)
+- basic\_json templated on a "policy" class [\#456](https://github.com/nlohmann/json/issues/456)
+- json::value\(const json\_pointer&, ValueType\) requires exceptions to return the default value. [\#440](https://github.com/nlohmann/json/issues/440)
+- is it possible merge two json object [\#428](https://github.com/nlohmann/json/issues/428)
+- Is it possible to turn this into a shared library? [\#420](https://github.com/nlohmann/json/issues/420)
+- Further thoughts on performance improvements [\#418](https://github.com/nlohmann/json/issues/418)
+- nan number stored as null [\#388](https://github.com/nlohmann/json/issues/388)
+- Behavior of operator\>\> should more closely resemble that of built-in overloads. [\#367](https://github.com/nlohmann/json/issues/367)
+- Request: range-based-for over a json-object to expose .first/.second [\#350](https://github.com/nlohmann/json/issues/350)
+- feature wish: JSONPath [\#343](https://github.com/nlohmann/json/issues/343)
+- UTF-8/Unicode escape and dump [\#330](https://github.com/nlohmann/json/issues/330)
+- Serialized value not always can be parsed. [\#329](https://github.com/nlohmann/json/issues/329)
+- Is there a way to forward declare nlohmann::json? [\#314](https://github.com/nlohmann/json/issues/314)
+- Exception line [\#301](https://github.com/nlohmann/json/issues/301)
+- Do not throw exception when default\_value's type does not match the actual type [\#278](https://github.com/nlohmann/json/issues/278)
+- dump\(\) method doesn't work with a custom allocator [\#268](https://github.com/nlohmann/json/issues/268)
+- Readme documentation enhancements [\#248](https://github.com/nlohmann/json/issues/248)
+- Use user-defined exceptions [\#244](https://github.com/nlohmann/json/issues/244)
+- Incorrect C++11 allocator model support [\#161](https://github.com/nlohmann/json/issues/161)
+
+- :white\_check\_mark: re-added tests for algorithms [\#879](https://github.com/nlohmann/json/pull/879) ([nlohmann](https://github.com/nlohmann))
+- Overworked library toward 3.0.0 release [\#875](https://github.com/nlohmann/json/pull/875) ([nlohmann](https://github.com/nlohmann))
+- :rotating\_light: remove C4996 warnings \#872 [\#873](https://github.com/nlohmann/json/pull/873) ([nlohmann](https://github.com/nlohmann))
+- :boom: throwing an exception in case dump encounters a non-UTF-8 string \#838 [\#870](https://github.com/nlohmann/json/pull/870) ([nlohmann](https://github.com/nlohmann))
+- :memo: fixing documentation \#867 [\#868](https://github.com/nlohmann/json/pull/868) ([nlohmann](https://github.com/nlohmann))
+- iter\_impl template conformance with C++17 [\#860](https://github.com/nlohmann/json/pull/860) ([bogemic](https://github.com/bogemic))
+- Std allocator conformance cpp17 [\#856](https://github.com/nlohmann/json/pull/856) ([bogemic](https://github.com/bogemic))
+- cmake: use BUILD\_INTERFACE/INSTALL\_INTERFACE [\#855](https://github.com/nlohmann/json/pull/855) ([theodelrieu](https://github.com/theodelrieu))
+- to/from\_json: add a MSVC-specific static\_assert to force a stacktrace [\#854](https://github.com/nlohmann/json/pull/854) ([theodelrieu](https://github.com/theodelrieu))
+- Add .natvis for MSVC debug view [\#844](https://github.com/nlohmann/json/pull/844) ([TinyTinni](https://github.com/TinyTinni))
+- Updated hunter package links [\#829](https://github.com/nlohmann/json/pull/829) ([jowr](https://github.com/jowr))
+- Typos README [\#811](https://github.com/nlohmann/json/pull/811) ([Itja](https://github.com/Itja))
+- add forwarding references to json\_ref constructor [\#807](https://github.com/nlohmann/json/pull/807) ([theodelrieu](https://github.com/theodelrieu))
+- Add transparent comparator and perfect forwarding support to find\(\) and count\(\) [\#795](https://github.com/nlohmann/json/pull/795) ([jseward](https://github.com/jseward))
+- Error : 'identifier "size\_t" is undefined' in linux [\#793](https://github.com/nlohmann/json/pull/793) ([sonulohani](https://github.com/sonulohani))
+- Fix Visual Studio 2017 warnings [\#788](https://github.com/nlohmann/json/pull/788) ([jseward](https://github.com/jseward))
+- Fix warning C4706 on Visual Studio 2017 [\#785](https://github.com/nlohmann/json/pull/785) ([jseward](https://github.com/jseward))
+- Set GENERATE\_TAGFILE in Doxyfile [\#783](https://github.com/nlohmann/json/pull/783) ([eld00d](https://github.com/eld00d))
+- using more CMake [\#765](https://github.com/nlohmann/json/pull/765) ([nlohmann](https://github.com/nlohmann))
+- Simplified istream handing \#367 [\#764](https://github.com/nlohmann/json/pull/764) ([pjkundert](https://github.com/pjkundert))
+- Add info for the vcpkg package. [\#753](https://github.com/nlohmann/json/pull/753) ([gregmarr](https://github.com/gregmarr))
+- fix from\_json implementation for pair/tuple [\#708](https://github.com/nlohmann/json/pull/708) ([theodelrieu](https://github.com/theodelrieu))
+- Update json.hpp [\#686](https://github.com/nlohmann/json/pull/686) ([GoWebProd](https://github.com/GoWebProd))
+- Remove duplicate word [\#685](https://github.com/nlohmann/json/pull/685) ([daixtrose](https://github.com/daixtrose))
+- To fix compilation issue for intel OSX compiler [\#682](https://github.com/nlohmann/json/pull/682) ([kbthomp1](https://github.com/kbthomp1))
+- Digraph warning [\#679](https://github.com/nlohmann/json/pull/679) ([traits](https://github.com/traits))
+- massage -\> message [\#678](https://github.com/nlohmann/json/pull/678) ([DmitryKuk](https://github.com/DmitryKuk))
+- Fix "not constraint" grammar in docs [\#674](https://github.com/nlohmann/json/pull/674) ([wincent](https://github.com/wincent))
+- Add documentation for integration with CMake and hunter [\#671](https://github.com/nlohmann/json/pull/671) ([dan-42](https://github.com/dan-42))
+- REFACTOR: rewrite CMakeLists.txt for better inlcude and reuse [\#669](https://github.com/nlohmann/json/pull/669) ([dan-42](https://github.com/dan-42))
+- enable\_testing only if the JSON\_BuildTests is ON [\#666](https://github.com/nlohmann/json/pull/666) ([effolkronium](https://github.com/effolkronium))
+- Support moving from rvalues in std::initializer\_list [\#663](https://github.com/nlohmann/json/pull/663) ([himikof](https://github.com/himikof))
+- add ensure\_ascii parameter to dump. \#330 [\#654](https://github.com/nlohmann/json/pull/654) ([ryanjmulder](https://github.com/ryanjmulder))
+- Rename BuildTests to JSON\_BuildTests [\#652](https://github.com/nlohmann/json/pull/652) ([olegendo](https://github.com/olegendo))
+- Don't include \<iostream\>, use std::make\_shared [\#650](https://github.com/nlohmann/json/pull/650) ([olegendo](https://github.com/olegendo))
+- Refacto/split basic json [\#643](https://github.com/nlohmann/json/pull/643) ([theodelrieu](https://github.com/theodelrieu))
+- fix typo in operator\_\_notequal example [\#630](https://github.com/nlohmann/json/pull/630) ([Chocobo1](https://github.com/Chocobo1))
+- Fix MSVC warning C4819 [\#629](https://github.com/nlohmann/json/pull/629) ([Chocobo1](https://github.com/Chocobo1))
+- \[BugFix\] Add parentheses around std::min [\#626](https://github.com/nlohmann/json/pull/626) ([koemeet](https://github.com/koemeet))
+- add pair/tuple conversions [\#624](https://github.com/nlohmann/json/pull/624) ([theodelrieu](https://github.com/theodelrieu))
+- remove std::pair support [\#615](https://github.com/nlohmann/json/pull/615) ([theodelrieu](https://github.com/theodelrieu))
+- Add pair support, fix CompatibleObject conversions \(fixes \#600\) [\#609](https://github.com/nlohmann/json/pull/609) ([theodelrieu](https://github.com/theodelrieu))
+- \#550 Fix iterator related compiling issues for Intel icc [\#598](https://github.com/nlohmann/json/pull/598) ([HenryRLee](https://github.com/HenryRLee))
+- Issue \#593 Fix the arithmetic operators in the iterator and reverse iterator [\#595](https://github.com/nlohmann/json/pull/595) ([HenryRLee](https://github.com/HenryRLee))
+- fix doxygen error of basic\_json::get\(\) [\#583](https://github.com/nlohmann/json/pull/583) ([zhaohuaxishi](https://github.com/zhaohuaxishi))
+- Fixing assignement for iterator wrapper second, and adding unit test [\#579](https://github.com/nlohmann/json/pull/579) ([Type1J](https://github.com/Type1J))
+- Adding first and second properties to iteration\_proxy\_internal [\#578](https://github.com/nlohmann/json/pull/578) ([Type1J](https://github.com/Type1J))
+- Adding support for Meson. [\#576](https://github.com/nlohmann/json/pull/576) ([Type1J](https://github.com/Type1J))
+- add enum class default conversions [\#545](https://github.com/nlohmann/json/pull/545) ([theodelrieu](https://github.com/theodelrieu))
+- Properly pop diagnostics [\#540](https://github.com/nlohmann/json/pull/540) ([tinloaf](https://github.com/tinloaf))
+- Add Visual Studio 17 image to appveyor build matrix [\#536](https://github.com/nlohmann/json/pull/536) ([vpetrigo](https://github.com/vpetrigo))
+- UTF8 encoding enhancement [\#534](https://github.com/nlohmann/json/pull/534) ([TedLyngmo](https://github.com/TedLyngmo))
+- Fix typo [\#530](https://github.com/nlohmann/json/pull/530) ([berkus](https://github.com/berkus))
+- Make exception base class visible in basic\_json [\#526](https://github.com/nlohmann/json/pull/526) ([krzysztofwos](https://github.com/krzysztofwos))
+- :art: Namespace `uint8\_t` from the C++ stdlib [\#510](https://github.com/nlohmann/json/pull/510) ([alex-weej](https://github.com/alex-weej))
+- add to\_json method for C arrays [\#508](https://github.com/nlohmann/json/pull/508) ([theodelrieu](https://github.com/theodelrieu))
+- Fix -Weffc++ warnings \(GNU 6.3.1\) [\#496](https://github.com/nlohmann/json/pull/496) ([TedLyngmo](https://github.com/TedLyngmo))
+
 ## [v2.1.1](https://github.com/nlohmann/json/releases/tag/v2.1.1) (2017-02-25)
 [Full Changelog](https://github.com/nlohmann/json/compare/v2.1.0...v2.1.1)
 
@@ -129,7 +525,6 @@
 - Performance improvements [\#365](https://github.com/nlohmann/json/issues/365)
 - 'to\_string' is not a member of 'std'  [\#364](https://github.com/nlohmann/json/issues/364)
 - Optional comment support. [\#363](https://github.com/nlohmann/json/issues/363)
-- Loss of precision when serializing \<double\> [\#360](https://github.com/nlohmann/json/issues/360)
 - Crash in dump\(\) from a static object [\#359](https://github.com/nlohmann/json/issues/359)
 - json::parse\(...\) vs json j; j.parse\(...\) [\#357](https://github.com/nlohmann/json/issues/357)
 - Hi, is there any method to dump  json to string with the insert order rather than alphabets [\#356](https://github.com/nlohmann/json/issues/356)
diff --git a/README.md b/README.md
index 7e68f86..37fd024 100644
--- a/README.md
+++ b/README.md
@@ -5,7 +5,7 @@
 [![Coverage Status](https://img.shields.io/coveralls/nlohmann/json.svg)](https://coveralls.io/r/nlohmann/json)
 [![Coverity Scan Build Status](https://scan.coverity.com/projects/5550/badge.svg)](https://scan.coverity.com/projects/nlohmann-json)
 [![Codacy Badge](https://api.codacy.com/project/badge/Grade/f3732b3327e34358a0e9d1fe9f661f08)](https://www.codacy.com/app/nlohmann/json?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=nlohmann/json&amp;utm_campaign=Badge_Grade)
-[![Try online](https://img.shields.io/badge/try-online-blue.svg)](https://wandbox.org/permlink/yCTCvQi0ZVxGuL3L)
+[![Try online](https://img.shields.io/badge/try-online-blue.svg)](https://wandbox.org/permlink/TZS6TQdqmEUcN8WW)
 [![Documentation](https://img.shields.io/badge/docs-doxygen-blue.svg)](http://nlohmann.github.io/json)
 [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/nlohmann/json/master/LICENSE.MIT)
 [![Github Releases](https://img.shields.io/github/release/nlohmann/json.svg)](https://github.com/nlohmann/json/releases)
@@ -947,7 +947,7 @@
 - [**send_to_wandbox**](https://github.com/nlohmann/json/blob/develop/doc/scripts/send_to_wandbox.py) to send code examples to [Wandbox](http://melpon.org/wandbox)
 - [**Travis**](https://travis-ci.org) for [continuous integration](https://travis-ci.org/nlohmann/json) on Linux and macOS
 - [**Valgrind**](http://valgrind.org) to check for correct memory management
-- [**Wandbox**](http://melpon.org/wandbox) for [online examples](https://wandbox.org/permlink/yCTCvQi0ZVxGuL3L)
+- [**Wandbox**](http://melpon.org/wandbox) for [online examples](https://wandbox.org/permlink/TZS6TQdqmEUcN8WW)
 
 
 ## Projects using JSON for Modern C++
diff --git a/doc/Doxyfile b/doc/Doxyfile
index bb38b97..56a8c58 100644
--- a/doc/Doxyfile
+++ b/doc/Doxyfile
@@ -5,7 +5,7 @@
 #---------------------------------------------------------------------------
 DOXYFILE_ENCODING      = UTF-8
 PROJECT_NAME           = "JSON for Modern C++"
-PROJECT_NUMBER         = 2.1.1
+PROJECT_NUMBER         = 3.0.0
 PROJECT_BRIEF          =
 PROJECT_LOGO           =
 OUTPUT_DIRECTORY       = .
diff --git a/doc/Makefile b/doc/Makefile
index c900bde..886378a 100644
--- a/doc/Makefile
+++ b/doc/Makefile
@@ -63,7 +63,7 @@
 	$(SED) -i 's@&lt;&#160;ObjectType,&#160;ArrayType,&#160;StringType,&#160;BooleanType,&#160;NumberIntegerType,&#160;NumberUnsignedType,&#160;NumberFloatType,&#160;AllocatorType,&#160;JSONSerializer&#160;&gt;@@g' html/*.html
 
 upload: clean doxygen check_output
-	cd html ; ../scripts/git-update-ghpages nlohmann/json
+	scripts/git-update-ghpages nlohmann/json html
 	rm -fr html
 	open http://nlohmann.github.io/json/
 
diff --git a/doc/examples/meta.output b/doc/examples/meta.output
index ae8cca6..287d438 100644
--- a/doc/examples/meta.output
+++ b/doc/examples/meta.output
@@ -2,16 +2,16 @@
     "compiler": {
         "c++": "201103",
         "family": "clang",
-        "version": "9.0.0 (clang-900.0.37)"
+        "version": "9.0.0 (clang-900.0.39.2)"
     },
     "copyright": "(C) 2013-2017 Niels Lohmann",
     "name": "JSON for Modern C++",
     "platform": "apple",
     "url": "https://github.com/nlohmann/json",
     "version": {
-        "major": 2,
-        "minor": 1,
-        "patch": 1,
-        "string": "2.1.1"
+        "major": 3,
+        "minor": 0,
+        "patch": 0,
+        "string": "3.0.0"
     }
 }
diff --git a/doc/index.md b/doc/index.md
index 0a7b45c..36bde60 100644
--- a/doc/index.md
+++ b/doc/index.md
@@ -278,4 +278,4 @@
 @author [Niels Lohmann](http://nlohmann.me)
 @see https://github.com/nlohmann/json to download the source code
 
-@version 2.1.1
+@version 3.0.0
diff --git a/doc/json.gif b/doc/json.gif
index 2fbcde6..dea0438 100644
--- a/doc/json.gif
+++ b/doc/json.gif
Binary files differ
diff --git a/doc/scripts/git-update-ghpages b/doc/scripts/git-update-ghpages
index f9760fe..393650c 100755
--- a/doc/scripts/git-update-ghpages
+++ b/doc/scripts/git-update-ghpages
@@ -1,221 +1,193 @@
-#!/usr/bin/env ruby
-# git update-ghpages user/repo -b gh-pages -p manual/ -i
+#!/usr/bin/env bash
+set -o errexit
 
-require 'fileutils'
-require 'tmpdir'
+copy_contents() {
+  local source="$1"
+  status "Copying contents from $source"
+  if [[ ! "$dryrun" == "1" ]]; then
+    (cd "$source" >/dev/null && tar c .) | tar xv
+  else
+    _ "(cd \"$source\" >/dev/null && tar c .) | tar xv"
+  fi
+}
 
-module Params
-  def extract(what)   i = index(what) and slice!(i, 2)[1] end;
-  def first_is(what)  shift  if what.include?(self.first); end
-  def self.[](*what)  what.extend Params; end
-  def ===(argv)       argv.first_is(self); end
-end
+# Sets git config
+set_config() {
+  if [ -n "$GIT_NAME" ]; then _ git config user.name "$GIT_NAME"; fi
+  if [ -n "$GIT_EMAIL" ]; then _ git config user.email "$GIT_EMAIL"; fi
+}
 
-# ============================================================================
+# Runs the deployment
+run() {
+  if [ ! -d "$source" ]; then
+    echo "Source is not a directory: $source"
+    exit 1
+  fi
 
-ARGV.extend Params
+  local tmpdir="$(mktemp -d)"
 
-class CLI
-  # CLI options
-  attr_reader :prefix    #=> "doc/"
-  attr_reader :input     #=> "/home/me/projects/foo"
-  attr_reader :message   #=> "Updated"
-  attr_reader :repo      #=> "git@github.com:me/project.git"
-  attr_reader :url       #=> "http://me.github.com/project"
-  attr_reader :branch    #=> "gh-pages"
+  if [[ "$force" == "1" ]]; then
+    _ cd "$tmpdir"
+    _ git init
+    _ git checkout -b "$branch"
+    copy_contents "$source"
+    if [[ "$useenv" == "1" ]]; then set_config; fi
+    _ git add -A .
+    git_commit
+    git_push --force
+  else
+    _ cd "$tmpdir"
+    _ git clone "$repo" . -b "$branch" || ( \
+      _ git init && \
+      _ git checkout -b "$branch")
+    if [[ "$keep" == "0" ]]; then _ rm -rf ./*; fi
+    copy_contents "$source"
+    if [[ "$useenv" == "1" ]]; then set_config; fi
+    _ git add -A .
+    git_commit || true
+    git_push
+  fi
+  _ rm -rf "$tmpdir"
+  status_ "Done"
+}
 
-  def verbose?() @verbose; end
-  def force?() @force; end
-  def simulate?() @simulate; end
+git_commit() {
+  if [ -z "$author" ]; then
+    _ git commit -m "$message"
+  else
+    _ git commit -m "$message" --author "$author"
+  fi
+}
 
-  def initialize
-    # Switches
-    @verbose  = !! (ARGV.extract('--verbose') || ARGV.delete('-v'))
-    @simulate = !! (ARGV.extract('--simulate') || ARGV.delete('-s'))
-    @force    = !! (ARGV.delete('--force') || ARGV.delete('-f'))
+git_push() {
+  if [ -z "$GITHUB_TOKEN" ]; then
+    _ git push "${repo}" "$branch" "$@"
+  else
+    status "Pushing via \$GITHUB_TOKEN $@"
+    _ git push "https://${GITHUB_TOKEN}@github.com/${repospec}.git" "$branch" "$@" \
+      --quiet >/dev/null 2>&1 || \
+      ( status_ "Failed to push"; exit 1 )
+  fi
+}
 
-    # Stuff
-    @prefix   = ARGV.extract('--prefix') || ARGV.extract('-p') || ''
-    @input    = File.expand_path(ARGV.extract('--input') || ARGV.extract('-i') || '.')
-    @message  = ARGV.extract('--message') || ARGV.extract('-m') || 'Update'
+status() {
+  echo -e "\n\033[34m==>\033[0;1m" "$@\033[0m"
+}
+status_() {
+  echo -e "\033[33;1m==>\033[0m" "$@"
+}
 
-    # Github info
-    branch = ARGV.extract('--branch') || ARGV.extract('-b') || nil
-    @repo, @url, @branch = get_github_info(ARGV.shift, branch)
-  end
+_() {
+  echo ""
+  status_ "$@"
+  if [[ ! "$dryrun" == "1" ]]; then "$@"; fi
+}
 
-  def git_current_branch
-    `git rev-parse --abbrev-ref HEAD`.strip
-  end
+help() {
+  local cmd="$(basename $0)"
+  echo 'Usage:'
+  echo "  $cmd <REPO> <SOURCE>"
+  echo ''
+  echo 'Parameters:'
+  echo "  REPO             repository to push to in 'user/repo' form"
+  echo "  SOURCE           path to upload to repository's gh-pages branch"
+  echo ''
+  echo 'Options:'
+  echo '  -h, --help       show help screen'
+  echo '  -f, --force      force push'
+  echo '  -n, --dry-run    run in simulation mode'
+  echo '  -e, --use-env    pick up arguments from environment variables'
+  echo '  -b, --branch     use this branch name (default: gh-pages)'
+  echo '  -a, --author     set the author'
+  echo '  -k, --keep       keep existing files in the repo'
+  echo ''
+  echo 'Env var options:'
+  echo '  GITHUB_TOKEN     if set, use this to push to the repo'
+  echo ''
+  echo 'Optional env vars:'
+  echo "  Run with '-e' to enable the use of these variables."
+  echo "  GIT_NAME         set this as the repos user.name"
+  echo '  GIT_EMAIL        set this as the repos user.email'
+  echo '  GITHUB_REPO      substitute as the REPO (1st argument)'
+  echo '  GIT_SOURCE       substitute as the SOURCE (2nd argument)'
+  echo '  GIT_BRANCH       use this branch name (--branch)'
+  echo ''
+  echo 'Example:'
+  echo "  $cmd rstacruz/myproject doc"
+  echo "    # pushes './doc' into the gh-pages branch of rstacruz/myproject"
+  echo ''
+  echo "  export GITHUB_REPO='xyz/abc'"
+  echo "  export GIT_SOURCE='docs'"
+  echo "  $cmd -e"
+  echo "    # pushes './doc' into the gh-pages branch of xyz/abc"
+}
 
-  def git_deploy
-    in_temp_path do |temppath|
-      status "Cloning repository"
-      system! "git clone #{repo} -b #{branch} #{temppath}"
+#
+# Defaults
+#
 
-      if git_current_branch != branch
-        status "Warning: No #{branch} branch found in repo, creating one."
-        return git_deploy_force
-      end
+force=0
+dryrun=0
+repospec=
+source=
+branch=
+message="Update"
+useenv=0
+author=""
+keep=0
 
-      copy_files input, File.join(temppath, prefix)
+#
+# Parse args
+#
 
-      status "Committing files"
-      system! "git add .; git add -u; git commit -m #{message.to_s.inspect}"
+while [[ "$1" =~ ^- && ! "$1" == '--' ]]; do case $1 in
+  -h | --help )
+    help
+    exit
+    ;;
+  -b | --branch )
+    shift
+    branch="$1"
+    ;;
+  -n | --dry-run )
+    dryrun=1
+    ;;
+  -e | --use-env )
+    useenv=1
+    ;;
+  -k | --keep )
+    keep=1
+    ;;
+  -a | --author)
+    shift
+    author="$1"
+    ;;
+  -f | --force )
+    force=1
+    ;;
+esac; shift; done
+if [[ "$1" == '--' ]]; then shift; fi
 
-      unless simulate?
-        status "Updating repo"
-        system! "git push origin #{branch}"
-      end
-      true
-    end
-  end
+if [[ "$useenv" == "1" ]] && [[ -n "$GIT_BRANCH" ]] && [[ -z "$branch" ]]; then
+  branch="$GIT_BRANCH"
+fi
 
-  def git_deploy_force
-    in_temp_path do |temppath|
-      status "Creating new repository"
-      system! "git init ."
-      system! "git checkout -b gh-pages"
+if [[ "$useenv" == "1" ]] && [[ -n "$GITHUB_REPO" ]] && [[ -n "$GIT_SOURCE" ]] && [[ -z "$2" ]]; then
+  repospec="$GITHUB_REPO"
+  source="$GIT_SOURCE"
+else
+  repospec="$1"
+  source="$2"
+fi
 
-      copy_files input, File.join(temppath, prefix)
+: ${branch:="gh-pages"}
 
-      status "Committing files"
-      system! "git add . && git commit -m #{message.to_s.inspect}"
+if [ -z "$source" ]; then
+  help
+  exit 1
+fi
 
-      unless simulate?
-        status "Updating repo"
-        system! "git push #{repo} gh-pages:#{branch} --force"
-      end
-      true
-    end
-  end
+source="`pwd -LP`/$source"
+repo="https://github.com/${repospec}.git"
 
-  def get_github_info(repo, branch=nil, prefix=nil)
-    if github_format?(repo)
-      user, repo_name = repo.split('/')
-      r = "git@github.com:#{repo}.git"
-
-      # User page or project page?
-      if repo_name =~ /\.github\.com/
-        [r, "http://#{repo_name}/#{prefix}", branch || 'master' ]
-      else
-        [r, "http://#{user}.github.com/#{repo_name}/#{prefix}", branch || 'gh-pages' ]
-      end
-    else
-      [repo, nil, branch]
-    end
-  end
-
-  def run!
-    unless repo
-      print_help
-      exit 128
-    end
-
-    status "Deploying to #{repo} (branch #{branch})"
-    msg "NOTE: Running in simulation mode." if simulate?
-    msg "WARNING: If the repository has gh-pages history, it with be overriden." if force? && !simulate?
-
-    result = force? ? git_deploy_force : git_deploy
-
-    if result
-      puts ""
-      status "Done."
-      msg "See: #{url}" if url && !simulate?
-    else
-      tip "Failed."
-      exit 1
-    end
-  end
-
-  def status(str)
-    puts "#{c('===>',34)} #{c(str, 32)}"
-  end
-
-  def msg(str)
-    puts "     #{c(str, 32)}"
-  end
-
-  def c(str, color)
-    "\033[#{color}m#{str}\033[0m"
-  end
-
-  def print_help
-    tip \
-    %{Usage: git update-ghpages username/repository [options]
-
-      Flags:
-        -f,        --force       Force an update (WARNING: kills the history!)
-        -s,        --simulate    Creates the repository, but doesn't push.
-        -v,        --verbose     Verbose mode
-
-      Options:
-        -p PATH,   --prefix      The prefix
-        -i PATH,   --input       Input (defaults to current directory)
-        -b BRANCH, --branch      The branch to deploy to (defaults to gh-pages)
-        -m MSG,    --message     Commit message (defaults to 'Update')
-
-      Examples:
-
-      Update the repo 'coffee' of github user 'james' with the files from the
-      current directory. The files will be in http://james.github.com/coffee.
-
-        $ git update-ghpages james/coffee
-
-      Same as above, but take the files from 'doc/'.
-
-        $ git update-ghpages james/coffee -i doc
-
-      Same as the first, but the files will instead be in
-      http://james.github.com/coffee/manual.
-
-        $ git update-ghpages james/coffee -i doc -p manual
-    }.gsub(/^ {4}/, '')
-  end
-
-private # Helpers
-
-  def tip(msg)
-    $stderr.write "#{msg}\n"
-  end
-
-  def github_format?(str)
-    str =~ /^([A-Za-z0-9\-_]+)\/([A-Za-z0-9\-_\.]+)$/
-  end
-
-  # Performs actions inside a temp path.
-  def in_temp_path(&blk)
-    require 'tmpdir'
-    Dir.mktmpdir do |dir|
-      Dir.chdir(dir) { yield dir }
-    end
-  end
-
-  def system!(str)
-    puts `#{str} 2>&1`.strip.gsub(/^/, "     ")
-    raise "Failed with exit code #{$?.to_i}" unless $?.to_i == 0
-  end
-
-  # Returns the current branch name
-  def git_branch
-    `git symbolic-ref HEAD`.strip.split('/').last
-  end
-
-  # Copy files from source folder to another
-  def copy_files(from, to)
-    status "Copying files #{from} => #{to}..."  if verbose?
-
-    Dir["#{from}/**/*"].each do |f|
-      next  unless File.file?(f)
-
-      target = File.join(to, f.gsub(/^#{Regexp.escape from}/, ''))
-
-      FileUtils.mkdir_p File.dirname(target)
-      msg "%20s => %-20s" % [f, target]  if verbose?
-      FileUtils.cp f, target
-    end
-  end
-
-end
-
-CLI.new.run!
+run
diff --git a/src/json.hpp b/src/json.hpp
index 31429f8..91cd2a2 100644
--- a/src/json.hpp
+++ b/src/json.hpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 Licensed under the MIT License <http://opensource.org/licenses/MIT>.
@@ -7499,7 +7499,7 @@
         result["url"] = "https://github.com/nlohmann/json";
         result["version"] =
         {
-            {"string", "2.1.1"}, {"major", 2}, {"minor", 1}, {"patch", 1}
+            {"string", "3.0.0"}, {"major", 3}, {"minor", 0}, {"patch", 0}
         };
 
 #ifdef _WIN32
@@ -8119,7 +8119,7 @@
                     object = nullptr;  // silence warning, see #821
                     if (JSON_UNLIKELY(t == value_t::null))
                     {
-                        JSON_THROW(other_error::create(500, "961c151d2e87f2686a955a9be24d316f1362bf21 2.1.1")); // LCOV_EXCL_LINE
+                        JSON_THROW(other_error::create(500, "961c151d2e87f2686a955a9be24d316f1362bf21 3.0.0")); // LCOV_EXCL_LINE
                     }
                     break;
                 }
diff --git a/test/src/fuzzer-driver_afl.cpp b/test/src/fuzzer-driver_afl.cpp
index 92e9147..e4eb4a1 100644
--- a/test/src/fuzzer-driver_afl.cpp
+++ b/test/src/fuzzer-driver_afl.cpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++ (fuzz test support)
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 This file implements a driver for American Fuzzy Lop (afl-fuzz). It relies on
diff --git a/test/src/fuzzer-parse_cbor.cpp b/test/src/fuzzer-parse_cbor.cpp
index 4bcfc7e..cf2ce82 100644
--- a/test/src/fuzzer-parse_cbor.cpp
+++ b/test/src/fuzzer-parse_cbor.cpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++ (fuzz test support)
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 This file implements a parser test suitable for fuzz testing. Given a byte
diff --git a/test/src/fuzzer-parse_json.cpp b/test/src/fuzzer-parse_json.cpp
index fdaf96a..bacf628 100644
--- a/test/src/fuzzer-parse_json.cpp
+++ b/test/src/fuzzer-parse_json.cpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++ (fuzz test support)
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 This file implements a parser test suitable for fuzz testing. Given a byte
diff --git a/test/src/fuzzer-parse_msgpack.cpp b/test/src/fuzzer-parse_msgpack.cpp
index 667a68d..ae9534f 100644
--- a/test/src/fuzzer-parse_msgpack.cpp
+++ b/test/src/fuzzer-parse_msgpack.cpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++ (fuzz test support)
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 This file implements a parser test suitable for fuzz testing. Given a byte
diff --git a/test/src/unit-algorithms.cpp b/test/src/unit-algorithms.cpp
index 5a106b6..b3f534d 100644
--- a/test/src/unit-algorithms.cpp
+++ b/test/src/unit-algorithms.cpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++ (test suite)
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 Licensed under the MIT License <http://opensource.org/licenses/MIT>.
diff --git a/test/src/unit-allocator.cpp b/test/src/unit-allocator.cpp
index d2423a4..183336e 100644
--- a/test/src/unit-allocator.cpp
+++ b/test/src/unit-allocator.cpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++ (test suite)
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 Licensed under the MIT License <http://opensource.org/licenses/MIT>.
diff --git a/test/src/unit-capacity.cpp b/test/src/unit-capacity.cpp
index db5166a..971068e 100644
--- a/test/src/unit-capacity.cpp
+++ b/test/src/unit-capacity.cpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++ (test suite)
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 Licensed under the MIT License <http://opensource.org/licenses/MIT>.
diff --git a/test/src/unit-cbor.cpp b/test/src/unit-cbor.cpp
index 8d28f68..638ccef 100644
--- a/test/src/unit-cbor.cpp
+++ b/test/src/unit-cbor.cpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++ (test suite)
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 Licensed under the MIT License <http://opensource.org/licenses/MIT>.
diff --git a/test/src/unit-class_const_iterator.cpp b/test/src/unit-class_const_iterator.cpp
index 573e773..631656d 100644
--- a/test/src/unit-class_const_iterator.cpp
+++ b/test/src/unit-class_const_iterator.cpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++ (test suite)
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 Licensed under the MIT License <http://opensource.org/licenses/MIT>.
diff --git a/test/src/unit-class_iterator.cpp b/test/src/unit-class_iterator.cpp
index 1ef4a53..875f309 100644
--- a/test/src/unit-class_iterator.cpp
+++ b/test/src/unit-class_iterator.cpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++ (test suite)
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 Licensed under the MIT License <http://opensource.org/licenses/MIT>.
diff --git a/test/src/unit-class_lexer.cpp b/test/src/unit-class_lexer.cpp
index fbb98b5..3f2d77c 100644
--- a/test/src/unit-class_lexer.cpp
+++ b/test/src/unit-class_lexer.cpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++ (test suite)
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 Licensed under the MIT License <http://opensource.org/licenses/MIT>.
diff --git a/test/src/unit-class_parser.cpp b/test/src/unit-class_parser.cpp
index 9afa7d2..008ef43 100644
--- a/test/src/unit-class_parser.cpp
+++ b/test/src/unit-class_parser.cpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++ (test suite)
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 Licensed under the MIT License <http://opensource.org/licenses/MIT>.
diff --git a/test/src/unit-comparison.cpp b/test/src/unit-comparison.cpp
index 587ee3d..7b1aa6e 100644
--- a/test/src/unit-comparison.cpp
+++ b/test/src/unit-comparison.cpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++ (test suite)
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 Licensed under the MIT License <http://opensource.org/licenses/MIT>.
diff --git a/test/src/unit-concepts.cpp b/test/src/unit-concepts.cpp
index 971651e..981c89e 100644
--- a/test/src/unit-concepts.cpp
+++ b/test/src/unit-concepts.cpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++ (test suite)
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 Licensed under the MIT License <http://opensource.org/licenses/MIT>.
diff --git a/test/src/unit-constructor1.cpp b/test/src/unit-constructor1.cpp
index d8c9482..b216540 100644
--- a/test/src/unit-constructor1.cpp
+++ b/test/src/unit-constructor1.cpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++ (test suite)
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 Licensed under the MIT License <http://opensource.org/licenses/MIT>.
diff --git a/test/src/unit-constructor2.cpp b/test/src/unit-constructor2.cpp
index 7259edf..cf5e39f 100644
--- a/test/src/unit-constructor2.cpp
+++ b/test/src/unit-constructor2.cpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++ (test suite)
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 Licensed under the MIT License <http://opensource.org/licenses/MIT>.
diff --git a/test/src/unit-convenience.cpp b/test/src/unit-convenience.cpp
index 3301a4e..fc9f299 100644
--- a/test/src/unit-convenience.cpp
+++ b/test/src/unit-convenience.cpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++ (test suite)
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 Licensed under the MIT License <http://opensource.org/licenses/MIT>.
diff --git a/test/src/unit-conversions.cpp b/test/src/unit-conversions.cpp
index 307fbe9..8197849 100644
--- a/test/src/unit-conversions.cpp
+++ b/test/src/unit-conversions.cpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++ (test suite)
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 Licensed under the MIT License <http://opensource.org/licenses/MIT>.
diff --git a/test/src/unit-deserialization.cpp b/test/src/unit-deserialization.cpp
index 2798f10..2181bc4 100644
--- a/test/src/unit-deserialization.cpp
+++ b/test/src/unit-deserialization.cpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++ (test suite)
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 Licensed under the MIT License <http://opensource.org/licenses/MIT>.
diff --git a/test/src/unit-element_access1.cpp b/test/src/unit-element_access1.cpp
index 630b1a5..0a7f964 100644
--- a/test/src/unit-element_access1.cpp
+++ b/test/src/unit-element_access1.cpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++ (test suite)
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 Licensed under the MIT License <http://opensource.org/licenses/MIT>.
diff --git a/test/src/unit-element_access2.cpp b/test/src/unit-element_access2.cpp
index 5950349..40cd811 100644
--- a/test/src/unit-element_access2.cpp
+++ b/test/src/unit-element_access2.cpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++ (test suite)
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 Licensed under the MIT License <http://opensource.org/licenses/MIT>.
diff --git a/test/src/unit-inspection.cpp b/test/src/unit-inspection.cpp
index e322dbe..82fbf72 100644
--- a/test/src/unit-inspection.cpp
+++ b/test/src/unit-inspection.cpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++ (test suite)
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 Licensed under the MIT License <http://opensource.org/licenses/MIT>.
diff --git a/test/src/unit-iterator_wrapper.cpp b/test/src/unit-iterator_wrapper.cpp
index b8e0065..137aca8 100644
--- a/test/src/unit-iterator_wrapper.cpp
+++ b/test/src/unit-iterator_wrapper.cpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++ (test suite)
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 Licensed under the MIT License <http://opensource.org/licenses/MIT>.
diff --git a/test/src/unit-iterators1.cpp b/test/src/unit-iterators1.cpp
index 66ffed2..d5d6193 100644
--- a/test/src/unit-iterators1.cpp
+++ b/test/src/unit-iterators1.cpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++ (test suite)
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 Licensed under the MIT License <http://opensource.org/licenses/MIT>.
diff --git a/test/src/unit-iterators2.cpp b/test/src/unit-iterators2.cpp
index be4e277..2ef5c0a 100644
--- a/test/src/unit-iterators2.cpp
+++ b/test/src/unit-iterators2.cpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++ (test suite)
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 Licensed under the MIT License <http://opensource.org/licenses/MIT>.
diff --git a/test/src/unit-json_patch.cpp b/test/src/unit-json_patch.cpp
index 636fa2b..15f3d01 100644
--- a/test/src/unit-json_patch.cpp
+++ b/test/src/unit-json_patch.cpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++ (test suite)
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 Licensed under the MIT License <http://opensource.org/licenses/MIT>.
diff --git a/test/src/unit-json_pointer.cpp b/test/src/unit-json_pointer.cpp
index ee55dc5..4af379c 100644
--- a/test/src/unit-json_pointer.cpp
+++ b/test/src/unit-json_pointer.cpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++ (test suite)
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 Licensed under the MIT License <http://opensource.org/licenses/MIT>.
diff --git a/test/src/unit-meta.cpp b/test/src/unit-meta.cpp
index ce50262..015e84b 100644
--- a/test/src/unit-meta.cpp
+++ b/test/src/unit-meta.cpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++ (test suite)
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 Licensed under the MIT License <http://opensource.org/licenses/MIT>.
@@ -42,10 +42,10 @@
         CHECK(j["url"] == "https://github.com/nlohmann/json");
         CHECK(j["version"] == json(
         {
-            {"string", "2.1.1"},
-            {"major", 2},
-            {"minor", 1},
-            {"patch", 1}
+            {"string", "3.0.0"},
+            {"major", 3},
+            {"minor", 0},
+            {"patch", 0}
         }));
 
         CHECK(j.find("platform") != j.end());
diff --git a/test/src/unit-modifiers.cpp b/test/src/unit-modifiers.cpp
index 01dfa41..e439c2f 100644
--- a/test/src/unit-modifiers.cpp
+++ b/test/src/unit-modifiers.cpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++ (test suite)
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 Licensed under the MIT License <http://opensource.org/licenses/MIT>.
diff --git a/test/src/unit-msgpack.cpp b/test/src/unit-msgpack.cpp
index 148bb18..18bdbfe 100644
--- a/test/src/unit-msgpack.cpp
+++ b/test/src/unit-msgpack.cpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++ (test suite)
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 Licensed under the MIT License <http://opensource.org/licenses/MIT>.
diff --git a/test/src/unit-noexcept.cpp b/test/src/unit-noexcept.cpp
index 8269574..ed29425 100644
--- a/test/src/unit-noexcept.cpp
+++ b/test/src/unit-noexcept.cpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++ (test suite)
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 Licensed under the MIT License <http://opensource.org/licenses/MIT>.
diff --git a/test/src/unit-pointer_access.cpp b/test/src/unit-pointer_access.cpp
index f3830e5..068330c 100644
--- a/test/src/unit-pointer_access.cpp
+++ b/test/src/unit-pointer_access.cpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++ (test suite)
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 Licensed under the MIT License <http://opensource.org/licenses/MIT>.
diff --git a/test/src/unit-readme.cpp b/test/src/unit-readme.cpp
index 1ce6ee1..8f9f7e0 100644
--- a/test/src/unit-readme.cpp
+++ b/test/src/unit-readme.cpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++ (test suite)
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 Licensed under the MIT License <http://opensource.org/licenses/MIT>.
diff --git a/test/src/unit-reference_access.cpp b/test/src/unit-reference_access.cpp
index c05ae72..fd02022 100644
--- a/test/src/unit-reference_access.cpp
+++ b/test/src/unit-reference_access.cpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++ (test suite)
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 Licensed under the MIT License <http://opensource.org/licenses/MIT>.
diff --git a/test/src/unit-regression.cpp b/test/src/unit-regression.cpp
index 1772816..a24ff53 100644
--- a/test/src/unit-regression.cpp
+++ b/test/src/unit-regression.cpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++ (test suite)
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 Licensed under the MIT License <http://opensource.org/licenses/MIT>.
diff --git a/test/src/unit-serialization.cpp b/test/src/unit-serialization.cpp
index fb500ed..ce48b55 100644
--- a/test/src/unit-serialization.cpp
+++ b/test/src/unit-serialization.cpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++ (test suite)
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 Licensed under the MIT License <http://opensource.org/licenses/MIT>.
diff --git a/test/src/unit-testsuites.cpp b/test/src/unit-testsuites.cpp
index d281c67..861419b 100644
--- a/test/src/unit-testsuites.cpp
+++ b/test/src/unit-testsuites.cpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++ (test suite)
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 Licensed under the MIT License <http://opensource.org/licenses/MIT>.
diff --git a/test/src/unit-udt.cpp b/test/src/unit-udt.cpp
index 409cac8..f32acbb 100644
--- a/test/src/unit-udt.cpp
+++ b/test/src/unit-udt.cpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++ (test suite)
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 Licensed under the MIT License <http://opensource.org/licenses/MIT>.
diff --git a/test/src/unit-unicode.cpp b/test/src/unit-unicode.cpp
index b51a157..24b13f9 100644
--- a/test/src/unit-unicode.cpp
+++ b/test/src/unit-unicode.cpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++ (test suite)
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 Licensed under the MIT License <http://opensource.org/licenses/MIT>.
diff --git a/test/src/unit.cpp b/test/src/unit.cpp
index 38f2d5b..b08408d 100644
--- a/test/src/unit.cpp
+++ b/test/src/unit.cpp
@@ -1,7 +1,7 @@
 /*
     __ _____ _____ _____
  __|  |   __|     |   | |  JSON for Modern C++ (test suite)
-|  |  |__   |  |  | | | |  version 2.1.1
+|  |  |__   |  |  | | | |  version 3.0.0
 |_____|_____|_____|_|___|  https://github.com/nlohmann/json
 
 Licensed under the MIT License <http://opensource.org/licenses/MIT>.