Changelog

# Unreleased {#poxy_changelog_unreleased}

### Fixes {#poxy_changelog_fixes_2}

- fixed assertion failure when parsing an incomplete date-time followed by a value terminator ([#313](https://github.com/marzer/tomlplusplus/issues/313)) ([@allenflux](https://github.com/allenflux))
- fixed `is_homogeneous()` overloads with `first_nonmatch` outparam being broken in optimized builds ([#231](https://github.com/marzer/tomlplusplus/issues/231)) ([@Forbinn](https://github.com/Forbinn))
- fixed unclear error message when parsing integers that would overflow ([#224](https://github.com/marzer/tomlplusplus/issues/224)) ([@chrimbo](https://github.com/chrimbo))
- fixed CMake `install` target installing `meson.build` files ([#236](https://github.com/marzer/tomlplusplus/issues/236)) ([@JWCS](https://github.com/JWCS))
- lowered `TOML_MAX_NESTED_VALUES` default from 256 to 128 to prevent stack overflow on deeply nested arrays/inline tables in sanitizer builds ([@danielbodorin](https://github.com/danielbodorin))

# v3.4.0 {#poxy_changelog_v3_4_0}

- fixed "unresolved symbol" error with nvc++ ([#220](https://github.com/marzer/tomlplusplus/issues/220)) ([@Tomcat-42](https://github.com/Tomcat-42))

### Fixes {#poxy_changelog_fixes_3}

- fixed `value_flags` not being preserved correctly when inserting into tables and arrays ([#108](https://github.com/marzer/tomlplusplus/issues/108)) ([@LebJe](https://github.com/LebJe))
- fixed `toml::value::flags()` not being cleared when `std::move`-ing a value
- fixed error in README ([#195](https://github.com/marzer/tomlplusplus/issues/195)) ([@andrewkcorcoran](https://github.com/andrewkcorcoran))
- fixed compiler error when using NVCC ([#198](https://github.com/marzer/tomlplusplus/issues/198)) ([@thompsonnoahe](https://github.com/thompsonnoahe))
- fixed `noexcept(...)` sometimes being incorrectly derived on `for_each()`
- fixed `for_each()` compilation error on GCC <= 7 ([#197](https://github.com/marzer/tomlplusplus/issues/197)) ([@sagi-ottopia](https://github.com/sagi-ottopia), [@damirbarr](https://github.com/damirbarr))
- fixed `FLT_RADIX` check getting broken by Intel MKL headers ([#202](https://github.com/marzer/tomlplusplus/issues/202)) ([@iago-lito](https://github.com/iago-lito))
- fixed keys containing `\t` incorrectly formatting as bare keys ([@jasmine-zhu](https://github.com/jasmine-zhu), [@arp242](https://github.com/arp242))
- fixed keys containing `\t` and `\n` not round-tripping correctly ([@arp242](https://github.com/arp242))

### Additions {#poxy_changelog_additions_2}

- added support for using enums with `value_or()`

### Changes {#poxy_changelog_changes_2}

- renamed header files to have `.hpp` extension (`toml.h` is still present for backwards-compatibility)

### Build system {#poxy_changelog_build_system_2}

- fixed meson builds with `-Ddefault_library=static` having hidden symbols on GNU compilers ([#201](https://github.com/marzer/tomlplusplus/issues/201)) ([@vlad0x00](https://github.com/vlad0x00))

# v3.3.0 {#poxy_changelog_v3_3_0}

[Released](https://github.com/marzer/tomlplusplus/releases/tag/v3.3.0) 2023-01-29

### Fixes {#poxy_changelog_fixes_4}

- fixed null pointer dereference in parser when exceptions are disabled ([#169](https://github.com/marzer/tomlplusplus/issues/169)) ([@ncaklovic](https://github.com/ncaklovic))
- fixed spurious warnings in MSVC 19.34
- fixed `toml::parse_file()` on windows for non-ASCII paths
- fixed a spurious table redefinition error ([#187](https://github.com/marzer/tomlplusplus/issues/187)) ([@jorisvr](https://github.com/jorisvr))
- fixed UB edge-case in integer parsing ([#188](https://github.com/marzer/tomlplusplus/issues/188)) ([@jorisvr](https://github.com/jorisvr))
- fixed some build issues with Apple-flavoured Clang ([#189](https://github.com/marzer/tomlplusplus/issues/189)) ([@eddelbuettel](https://github.com/eddelbuettel))

### Additions {#poxy_changelog_additions_3}

- added `toml::format_flags::terse_key_value_pairs`
- added `TOML_ENABLE_FLOAT16` config ([#178](https://github.com/marzer/tomlplusplus/issues/178)) ([@Scrumplex](https://github.com/Scrumplex))

### Removals {#poxy_changelog_removals_2}

- removed automatic detection of `_Float16` (you must explicitly set `TOML_ENABLE_FLOAT16` to enable it) ([#186](https://github.com/marzer/tomlplusplus/issues/186)) ([@benthetechguy](https://github.com/benthetechguy))

### Build system {#poxy_changelog_build_system_3}

- re-wrote the meson scripts to fix a number of issues ([#185](https://github.com/marzer/tomlplusplus/issues/185), [#186](https://github.com/marzer/tomlplusplus/issues/186)) ([@Tachi107](https://github.com/Tachi107), [@benthetechguy](https://github.com/benthetechguy))
- increased the minimum required meson version to `0.61.0`

# v3.2.0 {#poxy_changelog_v3_2_0}

[Released](https://github.com/marzer/tomlplusplus/releases/tag/v3.2.0) 2022-08-29

### Fixes {#poxy_changelog_fixes_5}

- fixed `[dotted.table]` source columns sometimes being off by one ([#152](https://github.com/marzer/tomlplusplus/issues/152)) ([@vaartis](https://github.com/vaartis))
- fixed spurious `Wnull-dereference` warning on GCC ([#164](https://github.com/marzer/tomlplusplus/issues/164)) ([@zaporozhets](https://github.com/zaporozhets))
- fixed `print_to_stream` ambiguity for `size_t` ([#167](https://github.com/marzer/tomlplusplus/issues/167)) ([@acronce](https://github.com/acronce))

### Additions {#poxy_changelog_additions_4}

- added value type deduction to `emplace()` methods
- added `toml::path` utility type ([#153](https://github.com/marzer/tomlplusplus/issues/153), [#156](https://github.com/marzer/tomlplusplus/issues/156), [#168](https://github.com/marzer/tomlplusplus/issues/168)) ([@jonestristand](https://github.com/jonestristand), [@kcsaul](https://github.com/kcsaul))
- added config option `TOML_CALLCONV`
- added missing relational operators for `source_position`

### Changes {#poxy_changelog_changes_3}

- relaxed cvref requirements of `is_homogeneous()`, `emplace()`, `emplace_back()`, `emplace_hint()`
- relaxed mantissa and digits10 requirements of extended float support

# v3.1.0 {#poxy_changelog_v3_1_0}

[Released](https://github.com/marzer/tomlplusplus/releases/tag/v3.1.0) 2022-04-22

### Fixes {#poxy_changelog_fixes_6}

- fixed potential segfault when calling `at_path()` with an empty string
- fixed UB in internal unicode machinery ([#144](https://github.com/marzer/tomlplusplus/issues/144)) ([@kchalmer](https://github.com/kchalmer))
- fixed a number of spurious warnings with Clang 10 ([#145](https://github.com/marzer/tomlplusplus/issues/145), [#146](https://github.com/marzer/tomlplusplus/issues/146)) ([@chronoxor](https://github.com/chronoxor))

### Additions {#poxy_changelog_additions_5}

- added `toml::array::for_each()`
- added `toml::table::for_each()`
- added config options `TOML_EXPORTED_CLASS`, `TOML_EXPORTED_MEMBER_FUNCTION`, `TOML_EXPORTED_STATIC_FUNCTION` & `TOML_EXPORTED_FREE_FUNCTION`
- added support for escape sequence `\e` when using `TOML_ENABLE_UNRELEASED_FEATURES` ([toml/790](https://github.com/toml-lang/toml/pull/790))
- added support for more unicode in bare keys when using `TOML_ENABLE_UNRELEASED_FEATURES` ([toml/891](https://github.com/toml-lang/toml/pull/891))

### Removals/Deprecations {#poxy_changelog_removals_deprecations}

- deprecated old `TOML_API` option in favour new `TOML_EXPORTED_X` options
    (it will continue to work as it did before if none of the new function export options are defined)

### Build system {#poxy_changelog_build_system_4}

- meson: added `compile_library` option ([@Tachi107](https://github.com/Tachi107))
- meson: added `ubsan_tests` and `ubsan_examples` options
- meson: use system dependencies where available when building tests ([@Tachi107](https://github.com/Tachi107))

# v3.0.1 {#poxy_changelog_v3_0_1}

[Released](https://github.com/marzer/tomlplusplus/releases/tag/v3.0.1) 2022-01-13

This is a single-bugfix release to fix an ODR issue for people using header-only mode in multiple
translation units. If you aren't seeing linker errors because of `toml::array::insert_at()`,
this release holds nothing of value over v3.0.0.

### Fixes {#poxy_changelog_fixes_7}

- fixed erroneous use of `TOML_API` causing ODR issue ([#136](https://github.com/marzer/tomlplusplus/issues/136)) ([@Azarael](https://github.com/Azarael))

# v3.0.0 {#poxy_changelog_v3_0_0}

[Released](https://github.com/marzer/tomlplusplus/releases/tag/v3.0.0) 2022-01-11

This release will be a major version bump, so it's ABI breaks all around.
Any changes that are likely to cause migration issues (API changes, build system breakage, etc.) are indicated with ⚠️.

### Fixes {#poxy_changelog_fixes_8}

- ⚠️ fixed `toml::table` init-list constructor requiring double-brackets
- ⚠️ fixed `TOML_API` + extern templates causing linker errors in some circumstances
- ⚠️ fixed incorrect `noexcept` specifications on many functions
- ⚠️ fixed missing `TOML_API` on some interfaces
- fixed `toml::json_formatter` not formatting inf and nan incorrectly
- fixed a number of spec conformance issues ([#127](https://github.com/marzer/tomlplusplus/issues/127), [#128](https://github.com/marzer/tomlplusplus/issues/128), [#129](https://github.com/marzer/tomlplusplus/issues/129), [#130](https://github.com/marzer/tomlplusplus/issues/130), [#131](https://github.com/marzer/tomlplusplus/issues/131), [#132](https://github.com/marzer/tomlplusplus/issues/132), [#135](https://github.com/marzer/tomlplusplus/issues/135)) ([@moorereason](https://github.com/moorereason))
- fixed an illegal table redefinition edge case ([#112](https://github.com/marzer/tomlplusplus/issues/112)) ([@python36](https://github.com/python36))
- fixed documentation issues
- fixed GCC bug causing memory leak during parse failures ([#123](https://github.com/marzer/tomlplusplus/issues/123), [#124](https://github.com/marzer/tomlplusplus/issues/124)) ([@rsmmr](https://github.com/rsmmr), [@ronalabraham](https://github.com/ronalabraham))
- fixed incorrect handling of vertical whitespace in keys when printing TOML to streams
- fixed incorrect source position in redefinition error messages
- fixed missing includes `<initializer_list>`, `<utility>`
- fixed parser not correctly round-tripping the format of binary and octal integers in some cases
- fixed some incorrect unicode scalar sequence transformations ([#125](https://github.com/marzer/tomlplusplus/issues/125))
- fixed strong exception guarantee edge-cases in `toml::table` and `toml::array`

### Additions {#poxy_changelog_additions_6}

- added value flags to array + table insert methods ([#44](https://github.com/marzer/tomlplusplus/issues/44)) ([@levicki](https://github.com/levicki))
- added support for Unicode 14.0
- added support for ref categories and cv-qualifiers in `toml::node::ref()`
- added magic `toml::value_flags` constant `toml::preserve_source_value_flags`
- added clang's enum annotation attributes to all enums
- added `TOML_ENABLE_FORMATTERS` option
- added `toml::yaml_formatter`
- added `toml::value` copy+move constructor overloads with flags override
- added `toml::table::prune()`
- added `toml::table::lower_bound()` (same semantics as `std::map::lower_bound()`)
- added `toml::table::emplace_hint()` (same semantics as `std::map::emplace_hint()`)
- added `toml::table::at()` (same semantics as `std::map::at()`)
- added `toml::node_view::operator==`
- added `toml::key` - provides a facility to access the source_regions of parsed keys ([#82](https://github.com/marzer/tomlplusplus/issues/82)) ([@vaartis](https://github.com/vaartis))
- added `toml::is_key<>` and `toml::is_key_or_convertible<>` metafunctions
- added `toml::format_flags::relaxed_float_precision` ([#89](https://github.com/marzer/tomlplusplus/issues/89)) ([@vaartis](https://github.com/vaartis))
- added `toml::format_flags::quote_infinities_and_nans`
- added `toml::format_flags::indent_sub_tables` ([#120](https://github.com/marzer/tomlplusplus/issues/120)) ([@W4RH4WK](https://github.com/W4RH4WK))
- added `toml::format_flags::indent_array_elements` ([#120](https://github.com/marzer/tomlplusplus/issues/120)) ([@W4RH4WK](https://github.com/W4RH4WK))
- added `toml::format_flags::allow_unicode_strings`
- added `toml::format_flags::allow_real_tabs_in_strings`
- added `toml::format_flags::allow_octal_integers`
- added `toml::format_flags::allow_hexadecimal_integers`
- added `toml::format_flags::allow_binary_integers`
- added `toml::date_time` converting constructors from `toml::date` and `toml::time`
- added `toml::at_path()`, `toml::node::at_path()` and `toml::node_view::at_path()` for qualified path-based lookups ([#118](https://github.com/marzer/tomlplusplus/issues/118)) ([@ben-crowhurst](https://github.com/ben-crowhurst))
- added `toml::array::resize()` param `default_init_flags`
- added `toml::array::replace()` ([#109](https://github.com/marzer/tomlplusplus/issues/109)) ([@LebJe](https://github.com/LebJe))
- added `toml::array::prune()`
- added `toml::array::at()` (same semantics as `std::vector::at()`)
- added `parse_benchmark` example
- added `operator->` to `toml::value` for class types

### Changes {#poxy_changelog_changes_4}

- ⚠️ `toml::format_flags` is now backed by `uint64_t` (was previously `uint8_t`)
- ⚠️ `toml::source_index` is now an alias for `uint32_t` unconditionally (was previously dependent on `TOML_LARGE_FILES`)
- ⚠️ `toml::table` now uses `toml::key` as the key type (was previously `std::string`)
- ⚠️ `toml::value_flags` is now backed by `uint16_t` (was previously `uint8_t`)
- ⚠️ made all overloaded operators 'hidden friends' where possible
- ⚠️ renamed `toml::default_formatter` to `toml::toml_formatter` (`toml::default_formatter` is now an alias)
- ⚠️ renamed `TOML_PARSER` option to `TOML_ENABLE_PARSER` (`TOML_PARSER` will continue to work but is deprecated)
- ⚠️ renamed `TOML_UNRELEASED_FEATURES` to `TOML_ENABLE_UNRELEASED_FEATURES` (`TOML_UNRELEASED_FEATURES` will continue to work but is deprecated)
- ⚠️ renamed `TOML_WINDOWS_COMPAT` to `TOML_ENABLE_WINDOWS_COMPAT` (`TOML_WINDOWS_COMPAT` will continue to work but is deprecated)
- applied clang-format to all the things 🎉️
- exposed `TOML_NAMESPACE_START` and `TOML_NAMESPACE_END` macros to help with ADL specialization scenarios
- improved performance of parser
- made date/time constructors accept any integral types
- moved all implementation headers to `/impl`
- renamed all implementation headers to `.h` and 'source' headers to `.inl`
- updated conformance tests

### Removals {#poxy_changelog_removals_3}

- ⚠️ removed `toml::format_flags::allow_value_format_flags`
- ⚠️ removed `TOML_LARGE_FILES` (it is now default - explicitly setting `TOML_LARGE_FILES` to `0` will invoke an `#error`)
- ⚠️ removed unnecessary template machinery (esp. where ostreams were involved)
- removed unnecessary uses of `final`

### Build system {#poxy_changelog_build_system_5}

- ⚠️ increased minimum required meson version to `0.54.0`
- disabled 'install' path when being used as a meson subproject ([#114](https://github.com/marzer/tomlplusplus/issues/114)) ([@Tachi107](https://github.com/Tachi107))
- fixed builds failing with meson 0.6.0 ([#117](https://github.com/marzer/tomlplusplus/issues/117)) ([@Tachi107](https://github.com/Tachi107))
- general meson improvements and fixes ([#115](https://github.com/marzer/tomlplusplus/issues/115)) ([@Tachi107](https://github.com/Tachi107))
- used `override_dependency` where supported ([#116](https://github.com/marzer/tomlplusplus/issues/116)) ([@Tachi107](https://github.com/Tachi107))

# v2.5.0 {#poxy_changelog_v2_5_0}

[Released](https://github.com/marzer/tomlplusplus/releases/tag/v2.5.0) 2021-07-11

### Fixes {#poxy_changelog_fixes_9}

- fixed linkage error with windows compat mode
- fixed `TOML_CONSTEVAL` broken in MSVC (again)
- fixed minor documentation bugs
- fixed cmake project version being incorrect ([#110](https://github.com/marzer/tomlplusplus/issues/110)) ([@GiulioRomualdi](https://github.com/GiulioRomualdi))

### Additions {#poxy_changelog_additions_7}

- added support for lowercase 't' and 'z' in datetimes (per spec)
- added natvis file to cmake install ([#106](https://github.com/marzer/tomlplusplus/issues/106)) ([@Ryan-rsm-McKenzie](https://github.com/Ryan-rsm-McKenzie))
- added VS cpp.hint file to cmake install
- added metafunctions `is_container`, `is_chronological`, `is_value`, `is_node`, `inserted_type_of`

### Changes {#poxy_changelog_changes_5}

- improved debug code size by removing unnecessary std::forwards and std::moves
- modernized the CMake build files ([#102](https://github.com/marzer/tomlplusplus/issues/102), [#103](https://github.com/marzer/tomlplusplus/issues/103), [#105](https://github.com/marzer/tomlplusplus/issues/105)) ([@friendlyanon](https://github.com/friendlyanon))
- updated conformance tests

# v2.4.0 {#poxy_changelog_v2_4_0}

[Released](https://github.com/marzer/tomlplusplus/releases/tag/v2.4.0) 2021-05-19

### Fixes {#poxy_changelog_fixes_10}

- fixed `node::value()` not retrieving inf and nan correctly
- fixed dotted kvps being unable to add subtables ([#61](https://github.com/marzer/tomlplusplus/issues/61)) ([@Validark](https://github.com/Validark))
- fixed linker error on linux ICC ([#83](https://github.com/marzer/tomlplusplus/issues/83)) ([@blackwer](https://github.com/blackwer))
- fixed segfault JSON-formatting a failed `parse_result` ([#96](https://github.com/marzer/tomlplusplus/issues/96)) ([@proydakov](https://github.com/proydakov))
- fixed spurious newline after JSON formatting a table
- fixed VS intellisense not detecting `TOML_COMPILER_EXCEPTIONS` correctly
- fixed crash with pathologically-nested inputs ([#100](https://github.com/marzer/tomlplusplus/issues/100)) ([@geeknik](https://github.com/geeknik))
- fixed `parse_result` natvis
- fixed false-positive `char8_t` support detection on older compilers
- fixed unnecessary `#include <Windows.h>` Windows builds ([@BeastLe9enD](https://github.com/BeastLe9enD))
- fixed `TOML_CONSTEVAL` breaking on VS 16.10.0pre2
- fixed spurious warnings with MSVC /Wall
- fixed missing blank lines between consecutive empty tables/A-o-T
- fixed unnecessary `TOML_API` declarations
- fixed many small documentation issues

### Additions {#poxy_changelog_additions_8}

- added proper cmake support ([#85](https://github.com/marzer/tomlplusplus/issues/85)) ([@ClausKlein](https://github.com/ClausKlein))
- added cmake FetchContent information to documentation ([#101](https://github.com/marzer/tomlplusplus/issues/101)) ([@proydakov](https://github.com/proydakov))

### Removals {#poxy_changelog_removals_4}

- removed explicit `#include <fstream>` requirement for `parse_file()`

# v2.3.0 {#poxy_changelog_v2_3_0}

[Released](https://github.com/marzer/tomlplusplus/releases/tag/v2.3.0) 2020-12-29

### Fixes {#poxy_changelog_fixes_11}

- fixed compiler errors caused by `<charconv>` with Apple-flavoured clang
- fixed array and table iterators missing `iterator_category` ([#77](https://github.com/marzer/tomlplusplus/issues/77)) ([@HazardyKnusperkeks](https://github.com/HazardyKnusperkeks))
- fixed `Wuseless-cast` warnings on GCC 10 ([#75](https://github.com/marzer/tomlplusplus/issues/75)) ([@HazardyKnusperkeks](https://github.com/HazardyKnusperkeks))
- fixed formatter not correctly line wrapping in some rare circumstances ([#73](https://github.com/marzer/tomlplusplus/issues/73)) ([@89z](https://github.com/89z))
- fixed an unnecessary global compiler flag breaking builds when used as a meson subproject ([#72](https://github.com/marzer/tomlplusplus/issues/72)) ([@jamabr](https://github.com/jamabr))
- fixed link error caused by `<charconv>` on emscripten ([#71](https://github.com/marzer/tomlplusplus/issues/71)) ([@suy](https://github.com/suy))
- fixed ambiguity with the `toml::literals` inline namespace ([#69](https://github.com/marzer/tomlplusplus/issues/69)) ([@std-any-emplace](https://github.com/std-any-emplace))
- fixed formatter emitting superfluous newlines after printing tables ([#68](https://github.com/marzer/tomlplusplus/issues/68)) ([@std-any-emplace](https://github.com/std-any-emplace))
- fixed array and table iterators not converting between const and non-const versions of themselves ([#67](https://github.com/marzer/tomlplusplus/issues/67)) ([@std-any-emplace](https://github.com/std-any-emplace))
- fixed some parser crashes when given pathologically-malformed UTF-8 ([#65](https://github.com/marzer/tomlplusplus/issues/65)) ([@sneves](https://github.com/sneves))

# v2.2.0 {#poxy_changelog_v2_2_0}

[Released](https://github.com/marzer/tomlplusplus/releases/tag/v2.2.0) 2020-08-09

### Fixes {#poxy_changelog_fixes_12}

- fixed some issues building with VS2017 ([#55](https://github.com/marzer/tomlplusplus/issues/55)) ([@sobczyk](https://github.com/sobczyk))
- fixed `_Float16` erroneously detected as supported on g++ ([#57](https://github.com/marzer/tomlplusplus/issues/57)) ([@sobczyk](https://github.com/sobczyk))
- fixed `<Windows.h>` causing compilation failure on mingw ([#63](https://github.com/marzer/tomlplusplus/issues/63)) ([@rezahousseini](https://github.com/rezahousseini))
- fixed CMake and pkg-config files not being installed into architecture-agnostic directories ([#59](https://github.com/marzer/tomlplusplus/issues/59)) ([@tambry](https://github.com/tambry))
- fixed memory leak during parsing ([#64](https://github.com/marzer/tomlplusplus/issues/64)) ([@sneves](https://github.com/sneves))
- fixed ambiguous `operator==` error on MSVC ([#56](https://github.com/marzer/tomlplusplus/issues/56)) ([@HellsingDarge](https://github.com/HellsingDarge))

### Additions {#poxy_changelog_additions_9}

- added additional node_view constructors
- added ability to specify serialization format of integer values
- added integer value serialization format round trip (e.g. hex in, hex out)

### Changes {#poxy_changelog_changes_6}

- updated conformance tests
- TOML version bump to v1.0.0-rc.3
- refactors and cleanups based on feedback given [here](https://medium.com/[@julienjorge](https://github.com/julienjorge)/code-review-of-toml-f816a6071120)

### Build system {#poxy_changelog_build_system_6}

- renamed build options to `snake_case`
- tests, examples and cmake config now explicitly disabled when used as a subproject
- removed small_binaries (it's now implicit when building as release)
- bumped minimum meson version to 0.53

# v2.1.0 {#poxy_changelog_v2_1_0}

[Released](https://github.com/marzer/tomlplusplus/releases/tag/v2.1.0) 2020-07-11

### Fixes {#poxy_changelog_fixes_13}

- fixed inconsistent emission of leading/trailing newlines when writing a table to an ostream ([#48](https://github.com/marzer/tomlplusplus/issues/48)) ([@levicki](https://github.com/levicki))
- fixed `Wcast-align` warning spam on ARM
- fixed `array::insert` not working correctly in some cases
- fixed `node::value_or()` not having the same semantics as `node::value()` ([#50](https://github.com/marzer/tomlplusplus/issues/50)) ([@whiterabbit963](https://github.com/whiterabbit963))
- fixed 'misleading assignment' of rvalue node_views ([#52](https://github.com/marzer/tomlplusplus/issues/52)) ([@Reedbeta](https://github.com/Reedbeta))
- fixed some issues handling infinities and NaNs ([#51](https://github.com/marzer/tomlplusplus/issues/51)) ([@Reedbeta](https://github.com/Reedbeta))
- fixed some minor documentation issues

### Additions {#poxy_changelog_additions_10}

- added support for `__fp16`, `_Float16`, `__float128`, `__int128_t` and `__uint128_t`
- added copy construction/assignment for arrays, tables and values
- added insert, emplace, push_back etc. compatibility with node_views
- added `node::is_homogenous`
- added `table::is_homogenous`
- added `value::is_homogenous` (just for generic code's sake)
- added `is_homogenous` overload for identifying failure-causing element
- added implicit conversion operator from `node` to `node_view` ([#52](https://github.com/marzer/tomlplusplus/issues/52)) ([@Reedbeta](https://github.com/Reedbeta))

### Changes {#poxy_changelog_changes_7}

- renamed `TOML_ALL_INLINE` to `TOML_HEADER_ONLY` (the old name will still work, but is no longer documented)
- general cleanup

# v2.0.0 {#poxy_changelog_v2_0_0}

[Released](https://github.com/marzer/tomlplusplus/releases/tag/v2.0.0) 2020-07-20

This release contains a fairly significant number of 'quality of life' improvements, yay! But also necessitates an ABI
break (hence the version number bump). Changes that might block a migration are annotated with ⚠️.

### Fixes {#poxy_changelog_fixes_14}

- fixed infinity and NaN-related code breaking when using `-ffast-math` and friends
- fixed narrowing conversion warnings when constructing int values from unsigned
- fixed Visual Studio debugger native visualizations for `date`, `time`, `time_offset`, `date_time`
- fixed some static assert messages being badly formatted on clang
- fixed internal macro `assert_or_assume` leaking out of `toml_parser.hpp`

### Additions {#poxy_changelog_additions_11}

- added additional types allowed in `node::value()` and `node::value_or()` ([see `value()` dox for examples](https://marzer.github.io/tomlplusplus/classtoml_1_1node.html#ab144c1ae90338b6b03f6af0574c87993))
- added additional types allowed in `node_view::value()` and `node_view::value_or()`
- added `node::value_exact()` and `node_view::value_exact()`
- added support for interop with wide strings on Windows:
  - added wide-string path arg overloads of `parse()` and `parse_file()`
  - added wide-string support to all relevant `table` and `array` ops
  - added wide-string support to `node::value(), node::value_or()`
  - added wide-string support to `node_view::value(), node_view::value_or()`
  - added wide-string support to `value<string>` constructor
  - added wide-string overloads of `node_view::operator[]`
  - added `source_region::wide_path()`
  - added `TOML_WINDOWS_COMPAT` switch for explicitly enabling/disabling this stuff
- added emission of 'literal' strings to the TOML serializer
- added lots of minor documentation fixes and improvements
- added Visual Studio debugger native visualizations for `table`, `array`, `parse_result`, and `parse_error` ([#46](https://github.com/marzer/tomlplusplus/issues/46)) ([@Reedbeta](https://github.com/Reedbeta))
- added non-template version of `array::is_homogeneous()`
- added explicit instantiations of more template types when `!TOML_ALL_INLINE`

### Changes {#poxy_changelog_changes_8}

- ⚠️ deprecated `parse_result::get()` in favour of `parse_result::table()`
- ⚠️ deprecated `node_view::get()` in favour of `node_view::node()`
- ⚠️ simplified internal ABI namespaces
- improved the quality of many static_assert error messages

### Removals {#poxy_changelog_removals_5}

- ⚠️ renamed `date_time::time_offset` to just 'offset'
- ⚠️ removed `TOML_CHAR_8_STRINGS` since it no longer makes sense

# v1.3.3 {#poxy_changelog_v1_3_3}

[Released](https://github.com/marzer/tomlplusplus/releases/tag/v1.3.3) 2020-06-29

### Fixes {#poxy_changelog_fixes_15}

- fixed some minor TOML spec conformance bugs
- fixed BOM check causing EOF on very short iostream inputs
- fixed `std::numeric_limits::max()` getting broken by macros in some environments
- fixed 'unknown pragma' warning spam in older versions of GCC
- fixed a few minor documentation issues

### Additions {#poxy_changelog_additions_12}

- added rvalue overload of `array::flatten`
- added conformance tests from `BurntSushi/toml-test` and `iarna/toml-spec-tests`
- added `toml::inserter` as a workaround for nested construction of single-element `toml::arrays` performing move-construction instead
- added license boilerplate to test files

### Changes {#poxy_changelog_changes_9}

- refactored the parser to reduce binary size

# v1.3.2 {#poxy_changelog_v1_3_2}

[Released](https://github.com/marzer/tomlplusplus/releases/tag/v1.3.2) 2020-06-19

### Fixes {#poxy_changelog_fixes_16}

- fixed single-digit negative integers parsing as positive
- fixed parse failure when parsing an empty file
- fixed multi-line strings being allowed in keys
- fixed overflow for very long binary integer literals

### Changes {#poxy_changelog_changes_10}

- improved the performance of toml::parse_file
- improved the performance of printing to streams for deepy-nested TOML data

# v1.3.0 {#poxy_changelog_v1_3_0}

[Released](https://github.com/marzer/tomlplusplus/releases/tag/v1.3.0) 2020-06-02

### Fixes {#poxy_changelog_fixes_17}

- fixed `formatter::print_inline()` causing compilation failures in DLL builds
- fixed BOMs occasionally causing overflow/crash in char8 mode
- fixed some spurious warnings in GCC 10
- fixed clang static analyzer warning in BOM handling code

### Additions {#poxy_changelog_additions_13}

- added `table_iterator::operator ->`
- added `array::resize()` and `array::truncate()`
- added `array::capacity()`, `array::shrink_to_fit()`, `array::max_size()`
- added non-const -> const conversion for table and array iterators

### Changes {#poxy_changelog_changes_11}

- renamed table iterator proxy pair members to `first` and `second` to match STL

# v1.2.5 {#poxy_changelog_v1_2_5}

[Released](https://github.com/marzer/tomlplusplus/releases/tag/v1.2.5) 2020-04-24

### Fixes {#poxy_changelog_fixes_18}

- fixed some multi-line string parsing issues
- fixed pedantic warnings on gcc 10 and clang 11
- fixed `is_unicode_XXXXXX` functions being wrong in some cases
- fixed `TOML_LIKELY` not being correct on older versions of gcc and clang
- fixed minor documentation issues ([#26](https://github.com/marzer/tomlplusplus/issues/26), [#38](https://github.com/marzer/tomlplusplus/issues/38)) ([@prince-chrismc](https://github.com/prince-chrismc))

### Additions {#poxy_changelog_additions_14}

- added additional error message cases to the parser
- added `error_printer` example
- added `toml_generator` example

### Changes {#poxy_changelog_changes_12}

- improved unicode-related codegen

# v1.2.3 {#poxy_changelog_v1_2_3}

[Released](https://github.com/marzer/tomlplusplus/releases/tag/v1.2.3) 2020-04-11

### Fixes {#poxy_changelog_fixes_19}

- fixed printing of inf and nan
- fixed parser not handling floats with leading '.' characters
- fixed pedantic vtable warnings on clang with -Weverything
- fixed a number of documentation bugs
- fixed `TOML_UNRELEASED_FEATURES` default being 1 (it should have been 0)

### Additions {#poxy_changelog_additions_15}

- added `TOML_PARSER` configuration option
- added `TOML_LIB_SINGLE_HEADER` indicator
- added doxygen page for the configuration options
- added SPDX-License-Identifiers around the place

### Changes {#poxy_changelog_changes_13}

- split some header files up to make future maintenance easier
- refactored and greatly simplified parser

# v1.2.0 {#poxy_changelog_v1_2_0}

[Released](https://github.com/marzer/tomlplusplus/releases/tag/v1.2.0) 2020-04-07

### Fixes {#poxy_changelog_fixes_20}

- fixed some parsing and printing ops being locale-dependent
- fixed some parsing errors at EOF when `TOML_EXCEPTIONS = 0`
- fixed some unreferenced variable warnings on older compilers
- fixed some 'maybe-uninitialized' false-positives on GCC9
- fixed pkgconfig subdir being wrong

### Additions {#poxy_changelog_additions_16}

- added support for implementations without `<charconv>`
- added cmake package config generator ([#22](https://github.com/marzer/tomlplusplus/issues/22)) ([@GiulioRomualdi](https://github.com/GiulioRomualdi))
- added build config feature option `GENERATE_CMAKE_CONFIG`
- added many new tests

# v1.1.0 {#poxy_changelog_v1_1_0}

[Released](https://github.com/marzer/tomlplusplus/releases/tag/v1.1.0) 2020-04-03

### Fixes {#poxy_changelog_fixes_21}

- fixed some parser error paths not returning early enough `TOML_EXCEPTIONS=0`
- fixed a number of minor documentation issues

### Additions {#poxy_changelog_additions_17}

- added support for [TOML 1.0.0-rc.1](https://github.com/toml-lang/toml/releases/tag/v1.0.0-rc.1) 🎉
- added `operator[]`, `begin()`, `end()` to `toml::parse_result` for `TOML_EXCEPTIONS=0`
- added additional compilation speed improvements for `TOML_ALL_INLINE=0`
- added more specific error messages for parsing errors relating to prohibited codepoints
- added a large number of additional tests
- added support for installation with meson ([#16](https://github.com/marzer/tomlplusplus/issues/16)) ([@ximion](https://github.com/ximion))
- added the array and table iterators to the `toml` namespace

# v1.0.0 {#poxy_changelog_v1_0_0}

[Released](https://github.com/marzer/tomlplusplus/releases/tag/1.0.0) 2020-03-28

### Fixes {#poxy_changelog_fixes_22}

- fixed minor documentation issues

### Changes {#poxy_changelog_changes_14}

- refactoring of ABI-based inline namespaces

# v0.6.0 {#poxy_changelog_v0_6_0}

[Released](https://github.com/marzer/tomlplusplus/releases/tag/v0.6.0) 2020-03-24

### Fixes {#poxy_changelog_fixes_23}

- fixed minor preprocessor/macro issues
- fixed minor documentation issues

### Additions {#poxy_changelog_additions_18}

- added `<cassert>` include directly in 'debug' builds when `TOML_ASSERT` isn't defined
- added Clang's `[[trivial_abi]]` attribute to `date`, `time`, `time_offset`

# v0.5.0 {#poxy_changelog_v0_5_0}

[Released](https://github.com/marzer/tomlplusplus/releases/tag/v0.5.0) 2020-03-18

### Fixes {#poxy_changelog_fixes_24}

- fixed crash when reaching EOF while parsing a string when exceptions are disabled
- fixed some attribute warnings in GCC
- fixed build with GCC 8.2.0 ([#15](https://github.com/marzer/tomlplusplus/issues/15)) ([@shdnx](https://github.com/shdnx))
- fixed exception mode detection sometimes being incorrect on MSVC
- fixed compilation on older implementations without `std::launder`
- fixed `json_formatter` type deduction on older compilers

### Additions {#poxy_changelog_additions_19}

- added support for Unicode 13.0
- added support for `\xHH` escape sequences ([toml/pull/796](https://github.com/toml-lang/toml/pull/796))
- added short-form license preamble to all source files
- added build configuration option for compiling examples

# v0.4.3 {#poxy_changelog_v0_4_3}

[Released](https://github.com/marzer/tomlplusplus/releases/tag/v0.4.3) 2020-03-10

### Fixes {#poxy_changelog_fixes_25}

- fixed ICE in VS2019 when using `/std:c++17` instead of `/std:c++latest`

### Additions {#poxy_changelog_additions_20}

- added `#error` when `TOML_EXCEPTIONS` is set to `1` but compiler exceptions were disabled

### Changes {#poxy_changelog_changes_15}

- parsing performance improvements

# v0.4.0 {#poxy_changelog_v0_4_0}

[Released](https://github.com/marzer/tomlplusplus/releases/tag/v0.4.0) 2020-03-05

### Fixes {#poxy_changelog_fixes_26}

- fixed `parse_file()` failing to compile with plain string literals
- fixed tests being built when used as a meson subproject ([#14](https://github.com/marzer/tomlplusplus/issues/14)) ([@shdnx](https://github.com/shdnx))

### Additions {#poxy_changelog_additions_21}

- added support for compiling into DLLs on windows (`TOML_API`)
- added support for explicitly setting the `TOML_EXCEPTION` mode
- added `TOML_OPTIONAL_TYPE` customization point
- added `node::ref()` and `node_view::ref()`

# v0.3.0 {#poxy_changelog_v0_3_0}

[Released](https://github.com/marzer/tomlplusplus/releases/tag/v0.3.0) 2020-03-01

### Fixes {#poxy_changelog_fixes_27}

- fixed some pedantic clang warnings
- fixed some minor documentation errors

### Additions {#poxy_changelog_additions_22}

- added `node::value()` and `node::value_or()`
- added `node_view::value()`
- added relops for the date/time classes
- added `TOML_ALL_INLINE` and `TOML_IMPLEMENTATION` options
- added preliminary support for ICC

### Removals {#poxy_changelog_removals_6}

- removed `<cmath>` dependency

# v0.2.1 {#poxy_changelog_v0_2_1}

[Released](https://github.com/marzer/tomlplusplus/releases/tag/v0.2.1) 2020-02-26

### Fixes {#poxy_changelog_fixes_28}

- fixed minor printing bug in `operator<<(ostream, source_position)`
- fixed minor documentation issues

### Additions {#poxy_changelog_additions_23}

- added `operator<<(ostream&, parse_error)`

### Changes {#poxy_changelog_changes_16}

- improved quality of error messages for boolean and inf/nan parsing

# v0.2.0 {#poxy_changelog_v0_2_0}

[Released](https://github.com/marzer/tomlplusplus/releases/tag/v0.2.0) 2020-02-23

### Fixes {#poxy_changelog_fixes_29}

- fixed truncation of floating-point values when using ostreams
- fixed missing value deduction guides for dates and times
- fixed potential ODR issues relating to exception mode handling etc.
- fixed some documentation issues

### Additions {#poxy_changelog_additions_24}

- added serialization round-trip tests
- added `node::is_number()`
- added `node_view::is_number()`
- added `node_view::value_or()`
- added hexfloat parsing support for all implementations (not just `<charconv>` ones)

# v0.1.0 {#poxy_changelog_v0_1_0}

[Released](https://github.com/marzer/tomlplusplus/releases/tag/v0.1.0) 2020-02-20

- First public release, yay! 🎉️