mirror of
https://github.com/nlohmann/json.git
synced 2026-03-22 00:42:45 +00:00
10 lines
260 KiB
HTML
10 lines
260 KiB
HTML
<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=author content="Niels Lohmann"><link href="https://json.nlohmann.me/home/releases/" rel="canonical"><link href=../exceptions/ rel=prev><link href=../design_goals/ rel=next><link rel=icon href=../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.6.17"><title>Releases - JSON for Modern C++</title><link rel=stylesheet href=../../assets/stylesheets/main.7e37652d.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.06af60db.min.css><link rel="stylesheet" href="../../assets/external/fonts.googleapis.com/css.61a430c9.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style><link rel=stylesheet href=../../css/custom.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#releases class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../.. title="JSON for Modern C++" class="md-header__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> JSON for Modern C++ </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Releases </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path fill=currentColor d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class="md-tabs__item md-tabs__item--active"> <a href=../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../features/arbitrary_types/ class=md-tabs__link> Features </a> </li> <li class=md-tabs__item> <a href=../../integration/ class=md-tabs__link> Integration </a> </li> <li class=md-tabs__item> <a href=../../api/basic_json/ class=md-tabs__link> API Documentation </a> </li> <li class=md-tabs__item> <a href=../../community/ class=md-tabs__link> Community </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title="JSON for Modern C++" class="md-nav__button md-logo" aria-label="JSON for Modern C++" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> JSON for Modern C++ </label> <div class=md-nav__source> <a href="https://github.com/nlohmann/json" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path fill=currentColor d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> nlohmann/json </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_1 checked> <div class="md-nav__link md-nav__container"> <a href=../.. class="md-nav__link "> <span class=md-ellipsis> Home </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=true> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> <li class=md-nav__item> <a href=../faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../exceptions/ class=md-nav__link> <span class=md-ellipsis> Exceptions </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> Releases </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> Releases </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#v373 class=md-nav__link> <span class=md-ellipsis> v3.7.3 </span> </a> <nav class=md-nav aria-label=v3.7.3> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v372 class=md-nav__link> <span class=md-ellipsis> v3.7.2 </span> </a> <nav class=md-nav aria-label=v3.7.2> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_1 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_1 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#further-changes class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_1 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v371 class=md-nav__link> <span class=md-ellipsis> v3.7.1 </span> </a> <nav class=md-nav aria-label=v3.7.1> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_2 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_2 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#improvements class=md-nav__link> <span class=md-ellipsis> Improvements </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_1 class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_2 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v370 class=md-nav__link> <span class=md-ellipsis> v3.7.0 </span> </a> <nav class=md-nav aria-label=v3.7.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_3 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#new-features class=md-nav__link> <span class=md-ellipsis> New Features </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_3 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#improvements_1 class=md-nav__link> <span class=md-ellipsis> Improvements </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_2 class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_3 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v361 class=md-nav__link> <span class=md-ellipsis> v3.6.1 </span> </a> <nav class=md-nav aria-label=v3.6.1> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_4 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_4 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_3 class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_4 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v360 class=md-nav__link> <span class=md-ellipsis> v3.6.0 </span> </a> <nav class=md-nav aria-label=v3.6.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_5 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#new-features_1 class=md-nav__link> <span class=md-ellipsis> New Features </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_5 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#improvements_2 class=md-nav__link> <span class=md-ellipsis> Improvements </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_4 class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_5 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v350 class=md-nav__link> <span class=md-ellipsis> v3.5.0 </span> </a> <nav class=md-nav aria-label=v3.5.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_6 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#new-features_2 class=md-nav__link> <span class=md-ellipsis> New Features </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_6 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#improvements_3 class=md-nav__link> <span class=md-ellipsis> Improvements </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_5 class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_6 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v340 class=md-nav__link> <span class=md-ellipsis> v3.4.0 </span> </a> <nav class=md-nav aria-label=v3.4.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_7 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#new-features_3 class=md-nav__link> <span class=md-ellipsis> New Features </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_7 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#improvements_4 class=md-nav__link> <span class=md-ellipsis> Improvements </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_6 class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_7 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v330 class=md-nav__link> <span class=md-ellipsis> v3.3.0 </span> </a> <nav class=md-nav aria-label=v3.3.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_8 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#new-features_4 class=md-nav__link> <span class=md-ellipsis> New Features </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_8 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#improvements_5 class=md-nav__link> <span class=md-ellipsis> Improvements </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_7 class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_8 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v320 class=md-nav__link> <span class=md-ellipsis> v3.2.0 </span> </a> <nav class=md-nav aria-label=v3.2.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_9 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#new-features_5 class=md-nav__link> <span class=md-ellipsis> New Features </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_9 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#improvements_6 class=md-nav__link> <span class=md-ellipsis> Improvements </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_8 class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_9 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v312 class=md-nav__link> <span class=md-ellipsis> v3.1.2 </span> </a> <nav class=md-nav aria-label=v3.1.2> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_10 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_10 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#improvements_7 class=md-nav__link> <span class=md-ellipsis> Improvements </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_9 class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_10 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v311 class=md-nav__link> <span class=md-ellipsis> v3.1.1 </span> </a> <nav class=md-nav aria-label=v3.1.1> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_11 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_11 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_10 class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_11 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v310 class=md-nav__link> <span class=md-ellipsis> v3.1.0 </span> </a> <nav class=md-nav aria-label=v3.1.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_12 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#new-features_6 class=md-nav__link> <span class=md-ellipsis> New features </span> </a> </li> <li class=md-nav__item> <a href=#improvements_8 class=md-nav__link> <span class=md-ellipsis> Improvements </span> </a> </li> <li class=md-nav__item> <a href=#reorganization class=md-nav__link> <span class=md-ellipsis> Reorganization </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_11 class=md-nav__link> <span class=md-ellipsis> Further changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_12 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v301 class=md-nav__link> <span class=md-ellipsis> v3.0.1 </span> </a> <nav class=md-nav aria-label=v3.0.1> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_13 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_13 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v300 class=md-nav__link> <span class=md-ellipsis> v3.0.0 </span> </a> <nav class=md-nav aria-label=v3.0.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_14 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#breaking-changes class=md-nav__link> <span class=md-ellipsis> Breaking changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_14 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> <li class=md-nav__item> <a href=#new-features_7 class=md-nav__link> <span class=md-ellipsis> New features </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_12 class=md-nav__link> <span class=md-ellipsis> Further changes </span> </a> </li> <li class=md-nav__item> <a href=#moving-from-2xx-to-300 class=md-nav__link> <span class=md-ellipsis> Moving from 2.x.x to 3.0.0 </span> </a> <nav class=md-nav aria-label="Moving from 2.x.x to 3.0.0"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#user-defined-exceptions class=md-nav__link> <span class=md-ellipsis> User-defined Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#handling-of-nan-and-inf class=md-nav__link> <span class=md-ellipsis> Handling of NaN and INF </span> </a> </li> <li class=md-nav__item> <a href=#removal-of-deprecated-functions class=md-nav__link> <span class=md-ellipsis> Removal of deprecated functions </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v211 class=md-nav__link> <span class=md-ellipsis> v2.1.1 </span> </a> <nav class=md-nav aria-label=v2.1.1> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_15 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_1 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v210 class=md-nav__link> <span class=md-ellipsis> v2.1.0 </span> </a> <nav class=md-nav aria-label=v2.1.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_16 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_2 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v2010 class=md-nav__link> <span class=md-ellipsis> v2.0.10 </span> </a> <nav class=md-nav aria-label=v2.0.10> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_17 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_3 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v209 class=md-nav__link> <span class=md-ellipsis> v2.0.9 </span> </a> <nav class=md-nav aria-label=v2.0.9> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_18 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_4 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v208 class=md-nav__link> <span class=md-ellipsis> v2.0.8 </span> </a> <nav class=md-nav aria-label=v2.0.8> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_19 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_5 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v207 class=md-nav__link> <span class=md-ellipsis> v2.0.7 </span> </a> <nav class=md-nav aria-label=v2.0.7> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_20 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_6 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v206 class=md-nav__link> <span class=md-ellipsis> v2.0.6 </span> </a> <nav class=md-nav aria-label=v2.0.6> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_21 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_7 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v205 class=md-nav__link> <span class=md-ellipsis> v2.0.5 </span> </a> <nav class=md-nav aria-label=v2.0.5> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_22 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_8 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v204 class=md-nav__link> <span class=md-ellipsis> v2.0.4 </span> </a> <nav class=md-nav aria-label=v2.0.4> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_23 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_9 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v203 class=md-nav__link> <span class=md-ellipsis> v2.0.3 </span> </a> <nav class=md-nav aria-label=v2.0.3> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_24 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_10 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v202 class=md-nav__link> <span class=md-ellipsis> v2.0.2 </span> </a> <nav class=md-nav aria-label=v2.0.2> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_25 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_11 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v201 class=md-nav__link> <span class=md-ellipsis> v2.0.1 </span> </a> <nav class=md-nav aria-label=v2.0.1> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_26 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_12 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v200 class=md-nav__link> <span class=md-ellipsis> v2.0.0 </span> </a> <nav class=md-nav aria-label=v2.0.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_27 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_13 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v110 class=md-nav__link> <span class=md-ellipsis> v1.1.0 </span> </a> <nav class=md-nav aria-label=v1.1.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_28 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_14 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> <li class=md-nav__item> <a href=#notes_1 class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v100 class=md-nav__link> <span class=md-ellipsis> v1.0.0 </span> </a> <nav class=md-nav aria-label=v1.0.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_29 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_15 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../design_goals/ class=md-nav__link> <span class=md-ellipsis> Design goals </span> </a> </li> <li class=md-nav__item> <a href=../architecture/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=../customers/ class=md-nav__link> <span class=md-ellipsis> Customers </span> </a> </li> <li class=md-nav__item> <a href=../sponsors/ class=md-nav__link> <span class=md-ellipsis> Sponsors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Features </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Features </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/arbitrary_types/ class=md-nav__link> <span class=md-ellipsis> Arbitrary Type Conversions </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_2> <div class="md-nav__link md-nav__container"> <a href=../../features/binary_formats/ class="md-nav__link "> <span class=md-ellipsis> Binary Formats </span> </a> <label class="md-nav__link " for=__nav_2_2 id=__nav_2_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_2> <span class="md-nav__icon md-icon"></span> Binary Formats </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/binary_formats/bjdata/ class=md-nav__link> <span class=md-ellipsis> BJData </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/bson/ class=md-nav__link> <span class=md-ellipsis> BSON </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/cbor/ class=md-nav__link> <span class=md-ellipsis> CBOR </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/messagepack/ class=md-nav__link> <span class=md-ellipsis> MessagePack </span> </a> </li> <li class=md-nav__item> <a href=../../features/binary_formats/ubjson/ class=md-nav__link> <span class=md-ellipsis> UBJSON </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/binary_values/ class=md-nav__link> <span class=md-ellipsis> Binary Values </span> </a> </li> <li class=md-nav__item> <a href=../../features/comments/ class=md-nav__link> <span class=md-ellipsis> Comments </span> </a> </li> <li class=md-nav__item> <a href=../../features/trailing_commas/ class=md-nav__link> <span class=md-ellipsis> Trailing Commas </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_6> <div class="md-nav__link md-nav__container"> <a href=../../features/element_access/ class="md-nav__link "> <span class=md-ellipsis> Element Access </span> </a> <label class="md-nav__link " for=__nav_2_6 id=__nav_2_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_6_label aria-expanded=false> <label class=md-nav__title for=__nav_2_6> <span class="md-nav__icon md-icon"></span> Element Access </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/element_access/unchecked_access/ class=md-nav__link> <span class=md-ellipsis> Unchecked access: operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/checked_access/ class=md-nav__link> <span class=md-ellipsis> Checked access: at </span> </a> </li> <li class=md-nav__item> <a href=../../features/element_access/default_value/ class=md-nav__link> <span class=md-ellipsis> Access with default value: value </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/iterators/ class=md-nav__link> <span class=md-ellipsis> Iterators </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_pointer/ class=md-nav__link> <span class=md-ellipsis> JSON Pointer </span> </a> </li> <li class=md-nav__item> <a href=../../features/json_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Patch and Diff </span> </a> </li> <li class=md-nav__item> <a href=../../features/merge_patch/ class=md-nav__link> <span class=md-ellipsis> JSON Merge Patch </span> </a> </li> <li class=md-nav__item> <a href=../../features/modules/ class=md-nav__link> <span class=md-ellipsis> Modules </span> </a> </li> <li class=md-nav__item> <a href=../../features/namespace/ class=md-nav__link> <span class=md-ellipsis> nlohmann Namespace </span> </a> </li> <li class=md-nav__item> <a href=../../features/object_order/ class=md-nav__link> <span class=md-ellipsis> Object Order </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_14> <div class="md-nav__link md-nav__container"> <a href=../../features/parsing/ class="md-nav__link "> <span class=md-ellipsis> Parsing </span> </a> <label class="md-nav__link " for=__nav_2_14 id=__nav_2_14_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_14_label aria-expanded=false> <label class=md-nav__title for=__nav_2_14> <span class="md-nav__icon md-icon"></span> Parsing </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/parsing/json_lines/ class=md-nav__link> <span class=md-ellipsis> JSON Lines </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parse_exceptions/ class=md-nav__link> <span class=md-ellipsis> Parsing and Exceptions </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/parser_callbacks/ class=md-nav__link> <span class=md-ellipsis> Parser Callbacks </span> </a> </li> <li class=md-nav__item> <a href=../../features/parsing/sax_interface/ class=md-nav__link> <span class=md-ellipsis> SAX Interface </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../features/assertions/ class=md-nav__link> <span class=md-ellipsis> Runtime Assertions </span> </a> </li> <li class=md-nav__item> <a href=../../features/enum_conversion/ class=md-nav__link> <span class=md-ellipsis> Specializing enum conversion </span> </a> </li> <li class=md-nav__item> <a href=../../features/macros/ class=md-nav__link> <span class=md-ellipsis> Supported Macros </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_18> <div class="md-nav__link md-nav__container"> <a href=../../features/types/ class="md-nav__link "> <span class=md-ellipsis> Types </span> </a> <label class="md-nav__link " for=__nav_2_18 id=__nav_2_18_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_18_label aria-expanded=false> <label class=md-nav__title for=__nav_2_18> <span class="md-nav__icon md-icon"></span> Types </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../features/types/number_handling/ class=md-nav__link> <span class=md-ellipsis> Number Handling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <div class="md-nav__link md-nav__container"> <a href=../../integration/ class="md-nav__link "> <span class=md-ellipsis> Integration </span> </a> <label class="md-nav__link " for=__nav_3 id=__nav_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Integration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../integration/migration_guide/ class=md-nav__link> <span class=md-ellipsis> Migration Guide </span> </a> </li> <li class=md-nav__item> <a href=../../integration/cmake/ class=md-nav__link> <span class=md-ellipsis> CMake </span> </a> </li> <li class=md-nav__item> <a href=../../integration/package_managers/ class=md-nav__link> <span class=md-ellipsis> Package Managers </span> </a> </li> <li class=md-nav__item> <a href=../../integration/pkg-config/ class=md-nav__link> <span class=md-ellipsis> Pkg-config </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> API Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> API Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_1> <div class="md-nav__link md-nav__container"> <a href=../../api/basic_json/ class="md-nav__link "> <span class=md-ellipsis> basic_json </span> </a> <label class="md-nav__link " for=__nav_4_1 id=__nav_4_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_1_label aria-expanded=false> <label class=md-nav__title for=__nav_4_1> <span class="md-nav__icon md-icon"></span> basic_json </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/basic_json/basic_json/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/~basic_json/ class=md-nav__link> <span class=md-ellipsis> (Destructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/accept/ class=md-nav__link> <span class=md-ellipsis> accept </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array/ class=md-nav__link> <span class=md-ellipsis> array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/array_t/ class=md-nav__link> <span class=md-ellipsis> array_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/at/ class=md-nav__link> <span class=md-ellipsis> at </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/begin/ class=md-nav__link> <span class=md-ellipsis> begin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/binary_t/ class=md-nav__link> <span class=md-ellipsis> binary_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/boolean_t/ class=md-nav__link> <span class=md-ellipsis> boolean_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbegin/ class=md-nav__link> <span class=md-ellipsis> cbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cbor_tag_handler_t/ class=md-nav__link> <span class=md-ellipsis> cbor_tag_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/cend/ class=md-nav__link> <span class=md-ellipsis> cend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/clear/ class=md-nav__link> <span class=md-ellipsis> clear </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/contains/ class=md-nav__link> <span class=md-ellipsis> contains </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/count/ class=md-nav__link> <span class=md-ellipsis> count </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crbegin/ class=md-nav__link> <span class=md-ellipsis> crbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/crend/ class=md-nav__link> <span class=md-ellipsis> crend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/default_object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> default_object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/diff/ class=md-nav__link> <span class=md-ellipsis> diff </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/dump/ class=md-nav__link> <span class=md-ellipsis> dump </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace/ class=md-nav__link> <span class=md-ellipsis> emplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/emplace_back/ class=md-nav__link> <span class=md-ellipsis> emplace_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end/ class=md-nav__link> <span class=md-ellipsis> end </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/end_pos/ class=md-nav__link> <span class=md-ellipsis> end_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/erase/ class=md-nav__link> <span class=md-ellipsis> erase </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/error_handler_t/ class=md-nav__link> <span class=md-ellipsis> error_handler_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/exception/ class=md-nav__link> <span class=md-ellipsis> exception </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/find/ class=md-nav__link> <span class=md-ellipsis> find </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/flatten/ class=md-nav__link> <span class=md-ellipsis> flatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bjdata/ class=md-nav__link> <span class=md-ellipsis> from_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_bson/ class=md-nav__link> <span class=md-ellipsis> from_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_cbor/ class=md-nav__link> <span class=md-ellipsis> from_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_msgpack/ class=md-nav__link> <span class=md-ellipsis> from_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/from_ubjson/ class=md-nav__link> <span class=md-ellipsis> from_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/front/ class=md-nav__link> <span class=md-ellipsis> front </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get/ class=md-nav__link> <span class=md-ellipsis> get </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_allocator/ class=md-nav__link> <span class=md-ellipsis> get_allocator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_binary/ class=md-nav__link> <span class=md-ellipsis> get_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ptr/ class=md-nav__link> <span class=md-ellipsis> get_ptr </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_ref/ class=md-nav__link> <span class=md-ellipsis> get_ref </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/get_to/ class=md-nav__link> <span class=md-ellipsis> get_to </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_hash/ class=md-nav__link> <span class=md-ellipsis> std::hash<basic_json> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/input_format_t/ class=md-nav__link> <span class=md-ellipsis> input_format_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/insert/ class=md-nav__link> <span class=md-ellipsis> insert </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/invalid_iterator/ class=md-nav__link> <span class=md-ellipsis> invalid_iterator </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_array/ class=md-nav__link> <span class=md-ellipsis> is_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_binary/ class=md-nav__link> <span class=md-ellipsis> is_binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_boolean/ class=md-nav__link> <span class=md-ellipsis> is_boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_discarded/ class=md-nav__link> <span class=md-ellipsis> is_discarded </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_null/ class=md-nav__link> <span class=md-ellipsis> is_null </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number/ class=md-nav__link> <span class=md-ellipsis> is_number </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_float/ class=md-nav__link> <span class=md-ellipsis> is_number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_integer/ class=md-nav__link> <span class=md-ellipsis> is_number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_number_unsigned/ class=md-nav__link> <span class=md-ellipsis> is_number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_object/ class=md-nav__link> <span class=md-ellipsis> is_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_primitive/ class=md-nav__link> <span class=md-ellipsis> is_primitive </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_string/ class=md-nav__link> <span class=md-ellipsis> is_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/is_structured/ class=md-nav__link> <span class=md-ellipsis> is_structured </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/items/ class=md-nav__link> <span class=md-ellipsis> items </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_base_class_t/ class=md-nav__link> <span class=md-ellipsis> json_base_class_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/json_serializer/ class=md-nav__link> <span class=md-ellipsis> json_serializer </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/max_size/ class=md-nav__link> <span class=md-ellipsis> max_size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/meta/ class=md-nav__link> <span class=md-ellipsis> meta </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/merge_patch/ class=md-nav__link> <span class=md-ellipsis> merge_patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_float_t/ class=md-nav__link> <span class=md-ellipsis> number_float_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_integer_t/ class=md-nav__link> <span class=md-ellipsis> number_integer_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/number_unsigned_t/ class=md-nav__link> <span class=md-ellipsis> number_unsigned_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object/ class=md-nav__link> <span class=md-ellipsis> object </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_comparator_t/ class=md-nav__link> <span class=md-ellipsis> object_comparator_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/object_t/ class=md-nav__link> <span class=md-ellipsis> object_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ValueType/ class=md-nav__link> <span class=md-ellipsis> operator ValueType </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_value_t/ class=md-nav__link> <span class=md-ellipsis> operator value_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%5B%5D/ class=md-nav__link> <span class=md-ellipsis> operator[] </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%3D/ class=md-nav__link> <span class=md-ellipsis> operator= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator%2B%3D/ class=md-nav__link> <span class=md-ellipsis> operator+= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_lt/ class=md-nav__link> <span class=md-ellipsis> operator< </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_gt/ class=md-nav__link> <span class=md-ellipsis> operator> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_le/ class=md-nav__link> <span class=md-ellipsis> operator<= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_ge/ class=md-nav__link> <span class=md-ellipsis> operator>= </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/operator_spaceship/ class=md-nav__link> <span class=md-ellipsis> operator<=> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/out_of_range/ class=md-nav__link> <span class=md-ellipsis> out_of_range </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/other_error/ class=md-nav__link> <span class=md-ellipsis> other_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse/ class=md-nav__link> <span class=md-ellipsis> parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parse_event_t/ class=md-nav__link> <span class=md-ellipsis> parse_event_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/parser_callback_t/ class=md-nav__link> <span class=md-ellipsis> parser_callback_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch/ class=md-nav__link> <span class=md-ellipsis> patch </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/patch_inplace/ class=md-nav__link> <span class=md-ellipsis> patch_inplace </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rbegin/ class=md-nav__link> <span class=md-ellipsis> rbegin </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/rend/ class=md-nav__link> <span class=md-ellipsis> rend </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/sax_parse/ class=md-nav__link> <span class=md-ellipsis> sax_parse </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/size/ class=md-nav__link> <span class=md-ellipsis> size </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/start_pos/ class=md-nav__link> <span class=md-ellipsis> start_pos </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/swap/ class=md-nav__link> <span class=md-ellipsis> swap </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/std_swap/ class=md-nav__link> <span class=md-ellipsis> std::swap<basic_json> </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bjdata/ class=md-nav__link> <span class=md-ellipsis> to_bjdata </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_bson/ class=md-nav__link> <span class=md-ellipsis> to_bson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_cbor/ class=md-nav__link> <span class=md-ellipsis> to_cbor </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_msgpack/ class=md-nav__link> <span class=md-ellipsis> to_msgpack </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/to_ubjson/ class=md-nav__link> <span class=md-ellipsis> to_ubjson </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type/ class=md-nav__link> <span class=md-ellipsis> type </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_error/ class=md-nav__link> <span class=md-ellipsis> type_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/type_name/ class=md-nav__link> <span class=md-ellipsis> type_name </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/unflatten/ class=md-nav__link> <span class=md-ellipsis> unflatten </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/update/ class=md-nav__link> <span class=md-ellipsis> update </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value/ class=md-nav__link> <span class=md-ellipsis> value </span> </a> </li> <li class=md-nav__item> <a href=../../api/basic_json/value_t/ class=md-nav__link> <span class=md-ellipsis> value_t </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_2> <div class="md-nav__link md-nav__container"> <a href=../../api/byte_container_with_subtype/ class="md-nav__link "> <span class=md-ellipsis> byte_container_with_subtype </span> </a> <label class="md-nav__link " for=__nav_4_2 id=__nav_4_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_2_label aria-expanded=false> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> byte_container_with_subtype </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/byte_container_with_subtype/ class=md-nav__link> <span class=md-ellipsis> (constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/clear_subtype/ class=md-nav__link> <span class=md-ellipsis> clear_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/has_subtype/ class=md-nav__link> <span class=md-ellipsis> has_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/set_subtype/ class=md-nav__link> <span class=md-ellipsis> set_subtype </span> </a> </li> <li class=md-nav__item> <a href=../../api/byte_container_with_subtype/subtype/ class=md-nav__link> <span class=md-ellipsis> subtype </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_3> <div class="md-nav__link md-nav__container"> <a href=../../api/adl_serializer/ class="md-nav__link "> <span class=md-ellipsis> adl_serializer </span> </a> <label class="md-nav__link " for=__nav_4_3 id=__nav_4_3_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_3_label aria-expanded=false> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> adl_serializer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/adl_serializer/from_json/ class=md-nav__link> <span class=md-ellipsis> from_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/adl_serializer/to_json/ class=md-nav__link> <span class=md-ellipsis> to_json </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/json/ class=md-nav__link> <span class=md-ellipsis> json </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_5> <div class="md-nav__link md-nav__container"> <a href=../../api/json_pointer/ class="md-nav__link "> <span class=md-ellipsis> json_pointer </span> </a> <label class="md-nav__link " for=__nav_4_5 id=__nav_4_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_5_label aria-expanded=false> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> json_pointer </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_pointer/json_pointer/ class=md-nav__link> <span class=md-ellipsis> (Constructor) </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/back/ class=md-nav__link> <span class=md-ellipsis> back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/empty/ class=md-nav__link> <span class=md-ellipsis> empty </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_string_t/ class=md-nav__link> <span class=md-ellipsis> operator string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_eq/ class=md-nav__link> <span class=md-ellipsis> operator== </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_ne/ class=md-nav__link> <span class=md-ellipsis> operator!= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slash/ class=md-nav__link> <span class=md-ellipsis> operator/ </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/operator_slasheq/ class=md-nav__link> <span class=md-ellipsis> operator/= </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/parent_pointer/ class=md-nav__link> <span class=md-ellipsis> parent_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/pop_back/ class=md-nav__link> <span class=md-ellipsis> pop_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/push_back/ class=md-nav__link> <span class=md-ellipsis> push_back </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/string_t/ class=md-nav__link> <span class=md-ellipsis> string_t </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_pointer/to_string/ class=md-nav__link> <span class=md-ellipsis> to_string </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_6> <div class="md-nav__link md-nav__container"> <a href=../../api/json_sax/ class="md-nav__link "> <span class=md-ellipsis> json_sax </span> </a> <label class="md-nav__link " for=__nav_4_6 id=__nav_4_6_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_6_label aria-expanded=false> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> json_sax </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/json_sax/binary/ class=md-nav__link> <span class=md-ellipsis> binary </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/boolean/ class=md-nav__link> <span class=md-ellipsis> boolean </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_array/ class=md-nav__link> <span class=md-ellipsis> end_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/end_object/ class=md-nav__link> <span class=md-ellipsis> end_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/key/ class=md-nav__link> <span class=md-ellipsis> key </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/null/ class=md-nav__link> <span class=md-ellipsis> null </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_float/ class=md-nav__link> <span class=md-ellipsis> number_float </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_integer/ class=md-nav__link> <span class=md-ellipsis> number_integer </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/number_unsigned/ class=md-nav__link> <span class=md-ellipsis> number_unsigned </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/parse_error/ class=md-nav__link> <span class=md-ellipsis> parse_error </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_array/ class=md-nav__link> <span class=md-ellipsis> start_array </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/start_object/ class=md-nav__link> <span class=md-ellipsis> start_object </span> </a> </li> <li class=md-nav__item> <a href=../../api/json_sax/string/ class=md-nav__link> <span class=md-ellipsis> string </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../api/operator_ltlt/ class=md-nav__link> <span class=md-ellipsis> operator<<(basic_json), operator<<(json_pointer) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_gtgt/ class=md-nav__link> <span class=md-ellipsis> operator>>(basic_json) </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json/ class=md-nav__link> <span class=md-ellipsis> operator""_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/operator_literal_json_pointer/ class=md-nav__link> <span class=md-ellipsis> operator""_json_pointer </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_json/ class=md-nav__link> <span class=md-ellipsis> ordered_json </span> </a> </li> <li class=md-nav__item> <a href=../../api/ordered_map/ class=md-nav__link> <span class=md-ellipsis> ordered_map </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4_13> <div class="md-nav__link md-nav__container"> <a href=../../api/macros/ class="md-nav__link "> <span class=md-ellipsis> macros </span> </a> <label class="md-nav__link " for=__nav_4_13 id=__nav_4_13_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_4_13_label aria-expanded=false> <label class=md-nav__title for=__nav_4_13> <span class="md-nav__icon md-icon"></span> macros </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../api/macros/json_assert/ class=md-nav__link> <span class=md-ellipsis> JSON_ASSERT </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_throw_user/ class=md-nav__link> <span class=md-ellipsis> JSON_CATCH_USER, JSON_THROW_USER, JSON_TRY_USER </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostics/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTICS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_diagnostic_positions/ class=md-nav__link> <span class=md-ellipsis> JSON_DIAGNOSTIC_POSITIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_disable_enum_serialization/ class=md-nav__link> <span class=md-ellipsis> JSON_DISABLE_ENUM_SERIALIZATION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_cpp_11/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_CPP_11, JSON_HAS_CPP_14, JSON_HAS_CPP_17, JSON_HAS_CPP_20 </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_filesystem/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_EXPERIMENTAL_FILESYSTEM, JSON_HAS_FILESYSTEM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_ranges/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_RANGES </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_static_rtti/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_STATIC_RTTI </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_has_three_way_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_HAS_THREE_WAY_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_noexception/ class=md-nav__link> <span class=md-ellipsis> JSON_NOEXCEPTION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_no_io/ class=md-nav__link> <span class=md-ellipsis> JSON_NO_IO </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_library_version_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_LIBRARY_VERSION_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_skip_unsupported_compiler_check/ class=md-nav__link> <span class=md-ellipsis> JSON_SKIP_UNSUPPORTED_COMPILER_CHECK </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_global_udls/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_GLOBAL_UDLS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_implicit_conversions/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_IMPLICIT_CONVERSIONS </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/json_use_legacy_discarded_value_comparison/ class=md-nav__link> <span class=md-ellipsis> JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_derived_type/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_INTRUSIVE, NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_define_type_non_intrusive/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT, NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_begin/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_BEGIN, NLOHMANN_JSON_NAMESPACE_END </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_namespace_no_version/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_NAMESPACE_NO_VERSION </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_serialize_enum/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_SERIALIZE_ENUM </span> </a> </li> <li class=md-nav__item> <a href=../../api/macros/nlohmann_json_version_major/ class=md-nav__link> <span class=md-ellipsis> NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <div class="md-nav__link md-nav__container"> <a href=../../community/ class="md-nav__link "> <span class=md-ellipsis> Community </span> </a> <label class="md-nav__link " for=__nav_5 id=__nav_5_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> Community </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../community/code_of_conduct/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../community/contribution_guidelines/ class=md-nav__link> <span class=md-ellipsis> Contribution Guidelines </span> </a> </li> <li class=md-nav__item> <a href=../../community/quality_assurance/ class=md-nav__link> <span class=md-ellipsis> Quality assurance </span> </a> </li> <li class=md-nav__item> <a href=../../community/governance/ class=md-nav__link> <span class=md-ellipsis> Governance </span> </a> </li> <li class=md-nav__item> <a href=../../community/security_policy/ class=md-nav__link> <span class=md-ellipsis> Security Policy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#v373 class=md-nav__link> <span class=md-ellipsis> v3.7.3 </span> </a> <nav class=md-nav aria-label=v3.7.3> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v372 class=md-nav__link> <span class=md-ellipsis> v3.7.2 </span> </a> <nav class=md-nav aria-label=v3.7.2> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_1 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_1 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#further-changes class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_1 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v371 class=md-nav__link> <span class=md-ellipsis> v3.7.1 </span> </a> <nav class=md-nav aria-label=v3.7.1> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_2 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_2 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#improvements class=md-nav__link> <span class=md-ellipsis> Improvements </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_1 class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_2 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v370 class=md-nav__link> <span class=md-ellipsis> v3.7.0 </span> </a> <nav class=md-nav aria-label=v3.7.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_3 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#new-features class=md-nav__link> <span class=md-ellipsis> New Features </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_3 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#improvements_1 class=md-nav__link> <span class=md-ellipsis> Improvements </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_2 class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_3 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v361 class=md-nav__link> <span class=md-ellipsis> v3.6.1 </span> </a> <nav class=md-nav aria-label=v3.6.1> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_4 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_4 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_3 class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_4 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v360 class=md-nav__link> <span class=md-ellipsis> v3.6.0 </span> </a> <nav class=md-nav aria-label=v3.6.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_5 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#new-features_1 class=md-nav__link> <span class=md-ellipsis> New Features </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_5 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#improvements_2 class=md-nav__link> <span class=md-ellipsis> Improvements </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_4 class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_5 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v350 class=md-nav__link> <span class=md-ellipsis> v3.5.0 </span> </a> <nav class=md-nav aria-label=v3.5.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_6 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#new-features_2 class=md-nav__link> <span class=md-ellipsis> New Features </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_6 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#improvements_3 class=md-nav__link> <span class=md-ellipsis> Improvements </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_5 class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_6 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v340 class=md-nav__link> <span class=md-ellipsis> v3.4.0 </span> </a> <nav class=md-nav aria-label=v3.4.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_7 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#new-features_3 class=md-nav__link> <span class=md-ellipsis> New Features </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_7 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#improvements_4 class=md-nav__link> <span class=md-ellipsis> Improvements </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_6 class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_7 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v330 class=md-nav__link> <span class=md-ellipsis> v3.3.0 </span> </a> <nav class=md-nav aria-label=v3.3.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_8 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#new-features_4 class=md-nav__link> <span class=md-ellipsis> New Features </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_8 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#improvements_5 class=md-nav__link> <span class=md-ellipsis> Improvements </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_7 class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_8 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v320 class=md-nav__link> <span class=md-ellipsis> v3.2.0 </span> </a> <nav class=md-nav aria-label=v3.2.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_9 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#new-features_5 class=md-nav__link> <span class=md-ellipsis> New Features </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_9 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#improvements_6 class=md-nav__link> <span class=md-ellipsis> Improvements </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_8 class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_9 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v312 class=md-nav__link> <span class=md-ellipsis> v3.1.2 </span> </a> <nav class=md-nav aria-label=v3.1.2> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_10 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_10 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#improvements_7 class=md-nav__link> <span class=md-ellipsis> Improvements </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_9 class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_10 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v311 class=md-nav__link> <span class=md-ellipsis> v3.1.1 </span> </a> <nav class=md-nav aria-label=v3.1.1> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_11 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#bug-fixes_11 class=md-nav__link> <span class=md-ellipsis> Bug Fixes </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_10 class=md-nav__link> <span class=md-ellipsis> Further Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_11 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v310 class=md-nav__link> <span class=md-ellipsis> v3.1.0 </span> </a> <nav class=md-nav aria-label=v3.1.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_12 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#new-features_6 class=md-nav__link> <span class=md-ellipsis> New features </span> </a> </li> <li class=md-nav__item> <a href=#improvements_8 class=md-nav__link> <span class=md-ellipsis> Improvements </span> </a> </li> <li class=md-nav__item> <a href=#reorganization class=md-nav__link> <span class=md-ellipsis> Reorganization </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_11 class=md-nav__link> <span class=md-ellipsis> Further changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_12 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v301 class=md-nav__link> <span class=md-ellipsis> v3.0.1 </span> </a> <nav class=md-nav aria-label=v3.0.1> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_13 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_13 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v300 class=md-nav__link> <span class=md-ellipsis> v3.0.0 </span> </a> <nav class=md-nav aria-label=v3.0.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_14 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#breaking-changes class=md-nav__link> <span class=md-ellipsis> Breaking changes </span> </a> </li> <li class=md-nav__item> <a href=#deprecated-functions_14 class=md-nav__link> <span class=md-ellipsis> Deprecated functions </span> </a> </li> <li class=md-nav__item> <a href=#new-features_7 class=md-nav__link> <span class=md-ellipsis> New features </span> </a> </li> <li class=md-nav__item> <a href=#further-changes_12 class=md-nav__link> <span class=md-ellipsis> Further changes </span> </a> </li> <li class=md-nav__item> <a href=#moving-from-2xx-to-300 class=md-nav__link> <span class=md-ellipsis> Moving from 2.x.x to 3.0.0 </span> </a> <nav class=md-nav aria-label="Moving from 2.x.x to 3.0.0"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#user-defined-exceptions class=md-nav__link> <span class=md-ellipsis> User-defined Exceptions </span> </a> </li> <li class=md-nav__item> <a href=#handling-of-nan-and-inf class=md-nav__link> <span class=md-ellipsis> Handling of NaN and INF </span> </a> </li> <li class=md-nav__item> <a href=#removal-of-deprecated-functions class=md-nav__link> <span class=md-ellipsis> Removal of deprecated functions </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v211 class=md-nav__link> <span class=md-ellipsis> v2.1.1 </span> </a> <nav class=md-nav aria-label=v2.1.1> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_15 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_1 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v210 class=md-nav__link> <span class=md-ellipsis> v2.1.0 </span> </a> <nav class=md-nav aria-label=v2.1.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_16 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_2 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v2010 class=md-nav__link> <span class=md-ellipsis> v2.0.10 </span> </a> <nav class=md-nav aria-label=v2.0.10> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_17 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_3 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v209 class=md-nav__link> <span class=md-ellipsis> v2.0.9 </span> </a> <nav class=md-nav aria-label=v2.0.9> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_18 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_4 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v208 class=md-nav__link> <span class=md-ellipsis> v2.0.8 </span> </a> <nav class=md-nav aria-label=v2.0.8> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_19 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_5 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v207 class=md-nav__link> <span class=md-ellipsis> v2.0.7 </span> </a> <nav class=md-nav aria-label=v2.0.7> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_20 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_6 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v206 class=md-nav__link> <span class=md-ellipsis> v2.0.6 </span> </a> <nav class=md-nav aria-label=v2.0.6> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_21 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_7 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v205 class=md-nav__link> <span class=md-ellipsis> v2.0.5 </span> </a> <nav class=md-nav aria-label=v2.0.5> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_22 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_8 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v204 class=md-nav__link> <span class=md-ellipsis> v2.0.4 </span> </a> <nav class=md-nav aria-label=v2.0.4> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_23 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_9 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v203 class=md-nav__link> <span class=md-ellipsis> v2.0.3 </span> </a> <nav class=md-nav aria-label=v2.0.3> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_24 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_10 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v202 class=md-nav__link> <span class=md-ellipsis> v2.0.2 </span> </a> <nav class=md-nav aria-label=v2.0.2> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_25 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_11 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v201 class=md-nav__link> <span class=md-ellipsis> v2.0.1 </span> </a> <nav class=md-nav aria-label=v2.0.1> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_26 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_12 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v200 class=md-nav__link> <span class=md-ellipsis> v2.0.0 </span> </a> <nav class=md-nav aria-label=v2.0.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_27 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_13 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> <li class=md-nav__item> <a href=#notes class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v110 class=md-nav__link> <span class=md-ellipsis> v1.1.0 </span> </a> <nav class=md-nav aria-label=v1.1.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_28 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_14 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> <li class=md-nav__item> <a href=#notes_1 class=md-nav__link> <span class=md-ellipsis> Notes </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#v100 class=md-nav__link> <span class=md-ellipsis> v1.0.0 </span> </a> <nav class=md-nav aria-label=v1.0.0> <ul class=md-nav__list> <li class=md-nav__item> <a href=#summary_29 class=md-nav__link> <span class=md-ellipsis> Summary </span> </a> </li> <li class=md-nav__item> <a href=#changes_15 class=md-nav__link> <span class=md-ellipsis> Changes </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href="https://github.com/nlohmann/json/edit/develop/docs/mkdocs/docs/home/releases.md" title="Edit this page" class="md-content__button md-icon" rel="edit"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href="https://github.com/nlohmann/json/raw/develop/docs/mkdocs/docs/home/releases.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=releases>Releases<a class=headerlink href=#releases title="Permanent link">¶</a></h1> <h2 id=v373>v3.7.3<a class=headerlink href=#v373 title="Permanent link">¶</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v3.7.3/include.zip">include.zip</a> (274 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.7.3/include.zip.asc">include.zip.asc</a> (1 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.7.3/json.hpp">json.hpp</a> (791 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.7.3/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <p>Release date: 2019-11-17 <abbr title="Secure Hash Algorithm">SHA</abbr>-256: 3b5d2b8f8282b80557091514d8ab97e27f9574336c804ee666fda673a9b59926 (json.hpp), 87b5884741427220d3a33df1363ae0e8b898099fbc59f1c451113f6732891014 (include.zip)</p> <h3 id=summary>Summary<a class=headerlink href=#summary title="Permanent link">¶</a></h3> <p>This release fixes a bug introduced in release 3.7.2 which could yield quadratic complexity in destructor calls. All changes are backward-compatible.</p> <h3 id=bug-fixes><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f41b.svg" title=":bug:"> Bug Fixes<a class=headerlink href=#bug-fixes title="Permanent link">¶</a></h3> <ul> <li>Removed <code>reserve()</code> calls from the destructor which could lead to quadratic complexity. #1837 #1838</li> </ul> <h3 id=deprecated-functions><img alt="🔥" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f525.svg" title=":fire:"> Deprecated functions<a class=headerlink href=#deprecated-functions title="Permanent link">¶</a></h3> <p>This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li>Function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e"><code>iterator_wrapper</code></a> are deprecated. Please use the member function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd"><code>items()</code></a> instead.</li> <li>Functions <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3"><code>friend std::istream& operator<<(basic_json&, std::istream&)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983"><code>friend std::ostream& operator>>(const basic_json&, std::ostream&)</code></a> are deprecated. Please use <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8"><code>friend std::istream& operator>>(std::istream&, basic_json&)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405"><code>friend operator<<(std::ostream&, const basic_json&)</code></a> instead.</li> </ul> <h2 id=v372>v3.7.2<a class=headerlink href=#v372 title="Permanent link">¶</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v3.7.2/include.zip">include.zip</a> (274 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.7.2/include.zip.asc">include.zip.asc</a> (1 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.7.2/json.hpp">json.hpp</a> (791 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.7.2/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <p>Release date: 2019-11-10 <abbr title="Secure Hash Algorithm">SHA</abbr>-256: 0a65fcbbe1b334d3f45c9498e5ee28c3f3b2428aea98557da4a3ff12f0f14ad6 (json.hpp), 67f69c9a93b7fa0612dc1b6273119d2c560317333581845f358aaa68bff8f087 (include.zip)</p> <h3 id=summary_1>Summary<a class=headerlink href=#summary_1 title="Permanent link">¶</a></h3> <p>Project <a href="https://github.com/lovasoa/bad_json_parsers">bad_json_parsers</a> tested how <abbr title="JavaScript Object Notation">JSON</abbr> parser libraries react on <strong>deeply nested inputs</strong>. It turns out that this library segfaulted at a certain nesting depth. This bug was fixed with this release. <strong>Now the parsing is only bounded by the available memory.</strong> All changes are backward-compatible.</p> <h3 id=bug-fixes_1><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f41b.svg" title=":bug:"> Bug Fixes<a class=headerlink href=#bug-fixes_1 title="Permanent link">¶</a></h3> <ul> <li>Fixed a bug that lead to stack overflow for deeply nested <abbr title="JavaScript Object Notation">JSON</abbr> values (objects, array) by changing the implementation of the destructor from a recursive to an iterative approach. #832, #1419, #1835</li> </ul> <h3 id=further-changes><img alt="🔨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f528.svg" title=":hammer:"> Further Changes<a class=headerlink href=#further-changes title="Permanent link">¶</a></h3> <ul> <li>Added WhiteStone Bolt. #1830</li> </ul> <h3 id=deprecated-functions_1><img alt="🔥" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f525.svg" title=":fire:"> Deprecated functions<a class=headerlink href=#deprecated-functions_1 title="Permanent link">¶</a></h3> <p>This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li>Function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e"><code>iterator_wrapper</code></a> are deprecated. Please use the member function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd"><code>items()</code></a> instead.</li> <li>Functions <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3"><code>friend std::istream& operator<<(basic_json&, std::istream&)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983"><code>friend std::ostream& operator>>(const basic_json&, std::ostream&)</code></a> are deprecated. Please use <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8"><code>friend std::istream& operator>>(std::istream&, basic_json&)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405"><code>friend operator<<(std::ostream&, const basic_json&)</code></a> instead.</li> </ul> <h2 id=v371>v3.7.1<a class=headerlink href=#v371 title="Permanent link">¶</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v3.7.1/include.zip">include.zip</a> (273 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.7.1/include.zip.asc">include.zip.asc</a> (1 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.7.1/json.hpp">json.hpp</a> (789 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.7.1/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <p>Release date: 2019-11-06 <abbr title="Secure Hash Algorithm">SHA</abbr>-256: b5ba7228f3c22a882d379e93d08eab4349458ee16fbf45291347994eac7dc7ce (json.hpp), 77b9f54b34e7989e6f402afb516f7ff2830df551c3a36973085e2c7a6b1045fe (include.zip)</p> <h3 id=summary_2>Summary<a class=headerlink href=#summary_2 title="Permanent link">¶</a></h3> <p>This release fixes several small bugs in the library. All changes are backward-compatible.</p> <h3 id=bug-fixes_2><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f41b.svg" title=":bug:"> Bug Fixes<a class=headerlink href=#bug-fixes_2 title="Permanent link">¶</a></h3> <ul> <li>Fixed a segmentation fault when serializing <code>std::int64_t</code> minimum value. #1708 #1722</li> <li>Fixed the <a href="https://nlohmann.github.io/json/classnlohmann_1_1basic__json_ab23b04802eb9da97dc3f664e54e09cb3.html#ab23b04802eb9da97dc3f664e54e09cb3"><code>contains()</code></a> function for <abbr title="JavaScript Object Notation">JSON</abbr> Pointers. #1727 #1741</li> <li>Fixed too lax <abbr title="Substitution failure is not an error">SFINAE</abbr> guard for conversion from <code>std::pair</code> and <code>std::tuple</code> to <code>json</code>. #1805 #1806 #1825 #1826</li> <li>Fixed some regressions detected by UBSAN. Updated <abbr title="Continuous Integration">CI</abbr> to use Clang-Tidy 7.1.0. #1716 #1728</li> <li>Fixed integer truncation in <code>iteration_proxy</code>. #1797</li> <li>Updated <a href="https://github.com/nemequ/hedley">Hedley</a> to v11 to <a href="https://github.com/nemequ/hedley/issues/28">fix a E2512 error</a> in <abbr title="Microsoft Visual C++">MSVC</abbr>. #1799</li> <li>Fixed a compile error in enum deserialization of non non-default-constructible types. #1647 #1821</li> <li>Fixed the conversion from <code>json</code> to <code>std::valarray</code>.</li> </ul> <h3 id=improvements><img alt="⚡" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/26a1.svg" title=":zap:"> Improvements<a class=headerlink href=#improvements title="Permanent link">¶</a></h3> <ul> <li>The <a href="https://nlohmann.github.io/json/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd"><code>items()</code></a> function can now be used with a custom string type. #1765</li> <li>Made <a href="https://nlohmann.github.io/json/classnlohmann_1_1json__pointer_a213bc67c32a30c68ac6bf06f5195d482.html#a213bc67c32a30c68ac6bf06f5195d482"><code>json_pointer::back</code></a> <code>const</code>. #1764 #1769</li> <li>Meson is part of the release archive. #1672 #1694 </li> <li>Improved documentation on the Meson and Spack package manager. #1694 #1720</li> </ul> <h3 id=further-changes_1><img alt="🔨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f528.svg" title=":hammer:"> Further Changes<a class=headerlink href=#further-changes_1 title="Permanent link">¶</a></h3> <ul> <li>Added GitHub Workflow with <code>ubuntu-latest</code>/<abbr title="GNU Compiler Collection">GCC</abbr> 7.4.0 as <abbr title="Continuous Integration">CI</abbr> step.</li> <li>Added <abbr title="GNU Compiler Collection">GCC</abbr> 9 to Travis <abbr title="Continuous Integration">CI</abbr> to compile with C++20 support. #1724</li> <li>Added <abbr title="Microsoft Visual C++">MSVC</abbr> 2019 to the AppVeyor <abbr title="Continuous Integration">CI</abbr>. #1780</li> <li>Added badge to <a href="https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:json">fuzzing status</a>.</li> <li>Fixed some cppcheck warnings. #1760</li> <li>Fixed several typos in the documentation. #1720 #1767 #1803</li> <li>Added documentation on the <code>JSON_THROW_USER</code>, <code>JSON_TRY_USER</code>, and <code>JSON_CATCH_USER</code> macros to control user-defined exception handling.</li> <li>Used GitHub's <a href="https://github.com/nlohmann/json/blob/develop/.github/CODEOWNERS">CODEOWNERS</a> and <a href="https://github.com/nlohmann/json/blob/develop/.github/SECURITY.md">SECURITY</a> feature.</li> <li>Removed <code>GLOB</code> from CMake files. #1779</li> <li>Updated to <a href="https://github.com/onqtam/doctest">Doctest</a> 2.3.5.</li> </ul> <h3 id=deprecated-functions_2><img alt="🔥" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f525.svg" title=":fire:"> Deprecated functions<a class=headerlink href=#deprecated-functions_2 title="Permanent link">¶</a></h3> <p>This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li>Function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e"><code>iterator_wrapper</code></a> are deprecated. Please use the member function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd"><code>items()</code></a> instead.</li> <li>Functions <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3"><code>friend std::istream& operator<<(basic_json&, std::istream&)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983"><code>friend std::ostream& operator>>(const basic_json&, std::ostream&)</code></a> are deprecated. Please use <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8"><code>friend std::istream& operator>>(std::istream&, basic_json&)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405"><code>friend operator<<(std::ostream&, const basic_json&)</code></a> instead.</li> </ul> <h2 id=v370>v3.7.0<a class=headerlink href=#v370 title="Permanent link">¶</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v3.7.0/include.zip">include.zip</a> (143 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.7.0/include.zip.asc">include.zip.asc</a> (1 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.7.0/json.hpp">json.hpp</a> (782 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.7.0/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <p>Release date: 2019-07-28 <abbr title="Secure Hash Algorithm">SHA</abbr>-256: a503214947952b69f0062f572cb74c17582a495767446347ce2e452963fc2ca4 (json.hpp), 541c34438fd54182e9cdc68dd20c898d766713ad6d901fb2c6e28ff1f1e7c10d (include.zip)</p> <h3 id=summary_3>Summary<a class=headerlink href=#summary_3 title="Permanent link">¶</a></h3> <p>This release introduces a few convenience functions and performs a lot of house keeping (bug fixes and small improvements). All changes are backward-compatible.</p> <h3 id=new-features><img alt="✨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/2728.svg" title=":sparkles:"> New Features<a class=headerlink href=#new-features title="Permanent link">¶</a></h3> <ul> <li>Add overload of the <strong><a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab23b04802eb9da97dc3f664e54e09cb3.html#ab23b04802eb9da97dc3f664e54e09cb3"><code>contains</code></a> function</strong> to check if a <abbr title="JavaScript Object Notation">JSON</abbr> pointer is valid without throwing exceptions, just like its <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9286acdc0578fc66e9346323e69fc0e3.html#a9286acdc0578fc66e9346323e69fc0e3">counterpart for object keys</a>. #1600</li> <li>Add a function <strong><a href="http://nlohmann.github.io/json/doxygen/namespacenlohmann_a6ce645a0b8717757e096a5b5773b7a16.html#a6ce645a0b8717757e096a5b5773b7a16"><code>to_string</code></a></strong> to allow for generic conversion to strings. #916 #1585</li> <li>Add <strong>return value for the <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_abf29131f898b05aad2c01a9c80e7a002.html#abf29131f898b05aad2c01a9c80e7a002"><code>emplace_back</code></a> function</strong>, returning a reference to the added element just like C++17 is <a href="https://en.cppreference.com/w/cpp/container/vector/emplace_back">introducing this</a> for <code>std::vector</code>. #1609</li> <li>Add info how to use the library with the <strong><a href="https://wiki.archlinux.org/index.php/pacman">pacman</a> package manager</strong> on MSYS2. #1670</li> </ul> <h3 id=bug-fixes_3><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f41b.svg" title=":bug:"> Bug Fixes<a class=headerlink href=#bug-fixes_3 title="Permanent link">¶</a></h3> <ul> <li>Fix an issue where typedefs with certain names yielded a compilation error. #1642 #1643</li> <li>Fix a conversion to <code>std::string_view</code> in the unit tests. #1634 #1639</li> <li>Fix <abbr title="Microsoft Visual C++">MSVC</abbr> Debug build. #1536 #1570 #1608</li> <li>Fix <a href="https://nlohmann.github.io/json/classnlohmann_1_1basic__json_a65753c68f06639eda0d355f919564e01.html#a65753c68f06639eda0d355f919564e01"><code>get_to</code></a> method to clear existing content before writing. #1511 #1555</li> <li>Fix a <code>-Wc++17-extensions</code> warning. <code>nodiscard</code> attributes are now only used with Clang when <code>-std=c++17</code> is used. #1535 #1551</li> </ul> <h3 id=improvements_1><img alt="⚡" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/26a1.svg" title=":zap:"> Improvements<a class=headerlink href=#improvements_1 title="Permanent link">¶</a></h3> <ul> <li>Switch from <a href="https://github.com/philsquared/Catch">Catch</a> to <strong><a href="https://github.com/onqtam/doctest">doctest</a></strong> for the unit tests which speeds up compilation and runtime of the 112,112,308 tests.</li> <li>Add an explicit section to the <a href="https://github.com/nlohmann/json/blob/develop/README.md">README</a> about the <strong>frequently addressed topics</strong> <a href="https://github.com/nlohmann/json#character-encoding">character encoding</a>, <a href="https://github.com/nlohmann/json#comments-in-json">comments in <abbr title="JavaScript Object Notation">JSON</abbr></a>, and the <a href="https://github.com/nlohmann/json#order-of-object-keys">order of object keys</a>.</li> </ul> <h3 id=further-changes_2><img alt="🔨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f528.svg" title=":hammer:"> Further Changes<a class=headerlink href=#further-changes_2 title="Permanent link">¶</a></h3> <ul> <li>Use <a href="https://cmake.org/cmake/help/v3.0/module/GNUInstallDirs.html"><code>GNUInstallDirs</code></a> to set library install directories. #1673</li> <li>Fix links in the <a href="https://github.com/nlohmann/json/blob/develop/README.md">README</a>. #1620 #1621 #1622 #1623 #1625</li> <li>Mention <a href="http://nlohmann.github.io/json/doxygen/namespacenlohmann_a2bfd99e845a2e5cd90aeaf1b1431f474.html#a2bfd99e845a2e5cd90aeaf1b1431f474"><code>json</code> type</a> on the <a href="http://nlohmann.github.io/json/doxygen/index.html">documentation start page</a>. #1616</li> <li>Complete documentation of <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_adcf8ca5079f5db993820bf50036bf45d.html#adcf8ca5079f5db993820bf50036bf45d"><code>value()</code> function</a> with respect to <code>type_error.302</code> exception. #1601</li> <li>Fix links in the documentation. #1598</li> <li>Add regression tests for <abbr title="Microsoft Visual C++">MSVC</abbr>. #1543 #1570</li> <li>Use <strong><a href="http://circleci.com">CircleCI</a></strong> for <a href="https://circleci.com/gh/nlohmann/json">continuous integration</a>.</li> <li>Use <strong><a href="https://doozer.io">Doozer</a></strong> for <a href="https://doozer.io/nlohmann/json">continuous integration</a> on Linux (CentOS, Raspbian, Fedora)</li> <li>Add tests to check each CMake flag (<code>JSON_BuildTests</code>, <code>JSON_Install</code>, <code>JSON_MultipleHeaders</code>, <code>JSON_Sanitizer</code>, <code>JSON_Valgrind</code>, <code>JSON_NoExceptions</code>, <code>JSON_Coverage</code>).</li> <li>Use <a href="https://nemequ.github.io/hedley/">Hedley</a> to avoid re-inventing several compiler-agnostic feature macros like <code>JSON_DEPRECATED</code>, <code>JSON_NODISCARD</code>, <code>JSON_LIKELY</code>, <code>JSON_UNLIKELY</code>, <code>JSON_HAS_CPP_14</code>, or <code>JSON_HAS_CPP_17</code>. Functions taking or returning pointers are annotated accordingly when a pointer will not be null.</li> <li>Build and run tests on <a href="https://ci.appveyor.com/project/nlohmann/json">AppVeyor</a> in DEBUG and RELEASE mode.</li> </ul> <h3 id=deprecated-functions_3><img alt="🔥" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f525.svg" title=":fire:"> Deprecated functions<a class=headerlink href=#deprecated-functions_3 title="Permanent link">¶</a></h3> <p>This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li>Function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e"><code>iterator_wrapper</code></a> are deprecated. Please use the member function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd"><code>items()</code></a> instead.</li> <li>Functions <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3"><code>friend std::istream& operator<<(basic_json&, std::istream&)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983"><code>friend std::ostream& operator>>(const basic_json&, std::ostream&)</code></a> are deprecated. Please use <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8"><code>friend std::istream& operator>>(std::istream&, basic_json&)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405"><code>friend operator<<(std::ostream&, const basic_json&)</code></a> instead.</li> </ul> <h2 id=v361>v3.6.1<a class=headerlink href=#v361 title="Permanent link">¶</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v3.6.1/include.zip">include.zip</a> (136 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.6.1/include.zip.asc">include.zip.asc</a> (1 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.6.1/json.hpp">json.hpp</a> (711 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.6.1/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <p>Release date: 2019-03-20 <abbr title="Secure Hash Algorithm">SHA</abbr>-256: d2eeb25d2e95bffeb08ebb7704cdffd2e8fca7113eba9a0b38d60a5c391ea09a (json.hpp), 69cc88207ce91347ea530b227ff0776db82dcb8de6704e1a3d74f4841bc651cf (include.zip)</p> <h3 id=summary_4>Summary<a class=headerlink href=#summary_4 title="Permanent link">¶</a></h3> <p>This release <strong>fixes a regression and a bug</strong> introduced by the earlier 3.6.0 release. All changes are backward-compatible.</p> <h3 id=bug-fixes_4><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f41b.svg" title=":bug:"> Bug Fixes<a class=headerlink href=#bug-fixes_4 title="Permanent link">¶</a></h3> <ul> <li>Fixed regression of #590 which could lead to compilation errors with <abbr title="GNU Compiler Collection">GCC</abbr> 7 and <abbr title="GNU Compiler Collection">GCC</abbr> 8. #1530</li> <li>Fixed a compilation error when <code><Windows.h></code> was included. #1531</li> </ul> <h3 id=further-changes_3><img alt="🔨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f528.svg" title=":hammer:"> Further Changes<a class=headerlink href=#further-changes_3 title="Permanent link">¶</a></h3> <ul> <li>Fixed a warning for missing field initializers. #1527</li> </ul> <h3 id=deprecated-functions_4><img alt="🔥" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f525.svg" title=":fire:"> Deprecated functions<a class=headerlink href=#deprecated-functions_4 title="Permanent link">¶</a></h3> <p>This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li>Function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e"><code>iterator_wrapper</code></a> are deprecated. Please use the member function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd"><code>items()</code></a> instead.</li> <li>Functions <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3"><code>friend std::istream& operator<<(basic_json&, std::istream&)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983"><code>friend std::ostream& operator>>(const basic_json&, std::ostream&)</code></a> are deprecated. Please use <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8"><code>friend std::istream& operator>>(std::istream&, basic_json&)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405"><code>friend operator<<(std::ostream&, const basic_json&)</code></a> instead.</li> </ul> <h2 id=v360>v3.6.0<a class=headerlink href=#v360 title="Permanent link">¶</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v3.6.0/include.zip">include.zip</a> (136 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.6.0/include.zip.asc">include.zip.asc</a> (1 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.6.0/json.hpp">json.hpp</a> (711 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.6.0/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <p>Release date: 2019-03-20 <abbr title="Secure Hash Algorithm">SHA</abbr>-256: ce9839370f28094c71107c405affb3b08c4a098154988014cbb0800b1c44a831 (json.hpp), 237c5e66e7f8186a02804ce9dbd5f69ce89fe7424ef84adf6142e973bd9532f4 (include.zip)</p> <p>ℹ️ <strong>This release introduced a regression. Please update to <a href="https://github.com/nlohmann/json/releases/tag/v3.6.1">version 3.6.1</a>!</strong></p> <h3 id=summary_5>Summary<a class=headerlink href=#summary_5 title="Permanent link">¶</a></h3> <p>This release adds some <strong>convenience functions for <abbr title="JavaScript Object Notation">JSON</abbr> Pointers</strong>, introduces a <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a0a45fc740637123fdf05fef970f8be47.html#a0a45fc740637123fdf05fef970f8be47"><code>contains</code></a> function to check if a key is present in an object, and improves the <strong>performance of integer serialization</strong>. Furthermore, a lot of small bug fixes and improvements have been made. All changes are backward-compatible.</p> <h3 id=new-features_1><img alt="✨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/2728.svg" title=":sparkles:"> New Features<a class=headerlink href=#new-features_1 title="Permanent link">¶</a></h3> <ul> <li>Overworked the public interface for <abbr title="JavaScript Object Notation">JSON</abbr> Pointers. The creation of <abbr title="JavaScript Object Notation">JSON</abbr> Pointers is simplified with <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1json__pointer_a90a11fe6c7f37b1746a3ff9cb24b0d53.html#a90a11fe6c7f37b1746a3ff9cb24b0d53"><code>operator/</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1json__pointer_a7395bd0af29ac23fd3f21543c935cdfa.html#a7395bd0af29ac23fd3f21543c935cdfa"><code>operator/=</code></a>. <abbr title="JavaScript Object Notation">JSON</abbr> Pointers can be inspected with <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1json__pointer_a649252bda4a2e75a0915b11a25d8bcc3.html#a649252bda4a2e75a0915b11a25d8bcc3"><code>empty</code></a>, <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1json__pointer_a6bd5b554c10f15672135c216893eef31.html#a6bd5b554c10f15672135c216893eef31"><code>back</code></a>, and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1json__pointer_afdaacce1edb7145e0434e014f0e8685a.html#afdaacce1edb7145e0434e014f0e8685a"><code>parent_pointer</code></a>, and manipulated with <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1json__pointer_a697d12b5bd6205f8866691b166b7c7dc.html#a697d12b5bd6205f8866691b166b7c7dc"><code>push_back</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1json__pointer_a4b1ee4d511ca195bed896a3da47e264c.html#a4b1ee4d511ca195bed896a3da47e264c"><code>pop_back</code></a>. #1434</li> <li>Added a boolean method <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a0a45fc740637123fdf05fef970f8be47.html#a0a45fc740637123fdf05fef970f8be47"><code>contains</code></a> to check whether an element exists in a <abbr title="JavaScript Object Notation">JSON</abbr> object with a given key. Returns false when called on non-object types. #1471 #1474</li> </ul> <h3 id=bug-fixes_5><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f41b.svg" title=":bug:"> Bug Fixes<a class=headerlink href=#bug-fixes_5 title="Permanent link">¶</a></h3> <ul> <li>Fixed a compilation issues with libc 2.12. #1483 #1514</li> <li>Fixed endian conversion on PPC64. #1489</li> <li>Fixed library to compile with <abbr title="GNU Compiler Collection">GCC</abbr> 9. #1472 #1492</li> <li>Fixed a compilation issue with <abbr title="GNU Compiler Collection">GCC</abbr> 7 on CentOS. #1496</li> <li>Fixed an integer overflow. #1447</li> <li>Fixed buffer flushing in serializer. #1445 #1446</li> </ul> <h3 id=improvements_2><img alt="⚡" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/26a1.svg" title=":zap:"> Improvements<a class=headerlink href=#improvements_2 title="Permanent link">¶</a></h3> <ul> <li>The performance of dumping integers has been greatly improved. #1411</li> <li>Added CMake parameter <code>JSON_Install</code> to control whether the library should be installed (default: on). #1330</li> <li>Fixed a lot of compiler and linter warnings. #1400 #1435 #1502</li> <li>Reduced required CMake version from 3.8 to 3.1. #1409 #1428 #1441 #1498</li> <li>Added <code>nodiscard</code> attribute to <code>meta()</code>, <code>array()</code>, <code>object()</code>, <code>from_cbor</code>, <code>from_msgpack</code>, <code>from_ubjson</code>, <code>from_bson</code>, and <code>parse</code>. #1433</li> </ul> <h3 id=further-changes_4><img alt="🔨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f528.svg" title=":hammer:"> Further Changes<a class=headerlink href=#further-changes_4 title="Permanent link">¶</a></h3> <ul> <li>Added missing headers. #1500</li> <li>Fixed typos and broken links in README. #1417 #1423 #1425 #1451 #1455 #1491</li> <li>Fixed documentation of parse function. #1473</li> <li>Suppressed warning that cannot be fixed inside the library. #1401 #1468</li> <li>Imroved package manager suppert:<ul> <li>Updated Buckaroo instructions. #1495</li> <li>Improved Meson support. #1463</li> <li>Added Conda package manager documentation. #1430</li> <li>Added NuGet package manager documentation. #1132</li> </ul> </li> <li>Continuous Integration<ul> <li>Removed unstable or deprecated Travis builders (Xcode 6.4 - 8.2) and added Xcode 10.1 builder.</li> <li>Added Clang 7 to Travis <abbr title="Continuous Integration">CI</abbr>.</li> <li>Fixed AppVeyor x64 builds. #1374 #1414</li> </ul> </li> <li>Updated thirdparty libraries:<ul> <li>Catch 1.12.0 -> 1.12.2</li> <li>Google Benchmark 1.3.0 -> 1.4.1</li> <li>Doxygen 1.8.15 -> 1.8.16</li> </ul> </li> </ul> <h3 id=deprecated-functions_5><img alt="🔥" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f525.svg" title=":fire:"> Deprecated functions<a class=headerlink href=#deprecated-functions_5 title="Permanent link">¶</a></h3> <p>This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li>Function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e"><code>iterator_wrapper</code></a> are deprecated. Please use the member function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd"><code>items()</code></a> instead.</li> <li>Functions <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3"><code>friend std::istream& operator<<(basic_json&, std::istream&)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983"><code>friend std::ostream& operator>>(const basic_json&, std::ostream&)</code></a> are deprecated. Please use <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8"><code>friend std::istream& operator>>(std::istream&, basic_json&)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405"><code>friend operator<<(std::ostream&, const basic_json&)</code></a> instead.</li> </ul> <h2 id=v350>v3.5.0<a class=headerlink href=#v350 title="Permanent link">¶</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v3.5.0/include.zip">include.zip</a> (133 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.5.0/include.zip.asc">include.zip.asc</a> (1 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.5.0/json.hpp">json.hpp</a> (693 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.5.0/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <p>Release date: 2018-12-22 <abbr title="Secure Hash Algorithm">SHA</abbr>-256: 8a6dbf3bf01156f438d0ca7e78c2971bca50eec4ca6f0cf59adf3464c43bb9d5 (json.hpp), 3564da9c5b0cf2e032f97c69baedf10ddbc98030c337d0327a215ea72259ea21 (include.zip)</p> <h3 id=summary_6>Summary<a class=headerlink href=#summary_6 title="Permanent link">¶</a></h3> <p>This release introduces the support for <strong>structured bindings</strong> and reading from <strong><code>FILE*</code></strong>. Besides, a few bugs have been fixed. All changes are backward-compatible.</p> <h3 id=new-features_2><img alt="✨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/2728.svg" title=":sparkles:"> New Features<a class=headerlink href=#new-features_2 title="Permanent link">¶</a></h3> <ul> <li> <p><strong>Structured bindings</strong> are now supported for <abbr title="JavaScript Object Notation">JSON</abbr> objects and arrays via the <a href="https://nlohmann.github.io/json/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd"><code>items()</code></a> member function, so finally this code is possible: <div class=highlight><pre><span></span><code><span class=k>for</span><span class=w> </span><span class=p>(</span><span class=k>auto</span><span class=o>&</span><span class=w> </span><span class=p>[</span><span class=n>key</span><span class=p>,</span><span class=w> </span><span class=n>val</span><span class=p>]</span><span class=w> </span><span class=o>:</span><span class=w> </span><span class=n>j</span><span class=p>.</span><span class=n>items</span><span class=p>())</span><span class=w> </span><span class=p>{</span>
|
||
<span class=w> </span><span class=n>std</span><span class=o>::</span><span class=n>cout</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=n>key</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=sc>':'</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=n>val</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=sc>'\n'</span><span class=p>;</span>
|
||
<span class=p>}</span>
|
||
</code></pre></div> #1388 #1391</p> </li> <li> <p>Added support for <strong>reading from <code>FILE*</code></strong> to support situations in which streams are nit available or would require too much RAM. #1370 #1392</p> </li> </ul> <h3 id=bug-fixes_6><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f41b.svg" title=":bug:"> Bug Fixes<a class=headerlink href=#bug-fixes_6 title="Permanent link">¶</a></h3> <ul> <li>The <code>eofbit</code> was not set for input streams when the end of a stream was reached while parsing. #1340 #1343</li> <li>Fixed a bug in the <abbr title="Simple API for XML">SAX</abbr> parser for <abbr title="Binary JSON">BSON</abbr> arrays.</li> </ul> <h3 id=improvements_3><img alt="⚡" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/26a1.svg" title=":zap:"> Improvements<a class=headerlink href=#improvements_3 title="Permanent link">¶</a></h3> <ul> <li>Added support for Clang 5.0.1 (PS4 version). #1341 #1342</li> </ul> <h3 id=further-changes_5><img alt="🔨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f528.svg" title=":hammer:"> Further Changes<a class=headerlink href=#further-changes_5 title="Permanent link">¶</a></h3> <ul> <li>Added a warning for implicit conversions to the documentation: It is not recommended to use implicit conversions when reading <strong>from</strong> a <abbr title="JavaScript Object Notation">JSON</abbr> value. Details about this recommendation can be found <a href="https://www.github.com/nlohmann/json/issues/958">here</a>. #1363</li> <li>Fixed typos in the documentation. #1329 #1380 #1382</li> <li>Fixed a C4800 warning. #1364</li> <li>Fixed a <code>-Wshadow</code> warning #1346</li> <li>Wrapped <code>std::snprintf</code> calls to avoid error in <abbr title="Microsoft Visual C++">MSVC</abbr>. #1337</li> <li>Added code to allow installation via Meson. #1345</li> </ul> <h3 id=deprecated-functions_6><img alt="🔥" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f525.svg" title=":fire:"> Deprecated functions<a class=headerlink href=#deprecated-functions_6 title="Permanent link">¶</a></h3> <p>This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li>Function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e"><code>iterator_wrapper</code></a> are deprecated. Please use the member function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd"><code>items()</code></a> instead.</li> <li>Functions <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3"><code>friend std::istream& operator<<(basic_json&, std::istream&)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983"><code>friend std::ostream& operator>>(const basic_json&, std::ostream&)</code></a> are deprecated. Please use <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8"><code>friend std::istream& operator>>(std::istream&, basic_json&)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405"><code>friend operator<<(std::ostream&, const basic_json&)</code></a> instead.</li> </ul> <h2 id=v340>v3.4.0<a class=headerlink href=#v340 title="Permanent link">¶</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v3.4.0/include.zip">include.zip</a> (132 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.4.0/include.zip.asc">include.zip.asc</a> (1 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.4.0/json.hpp">json.hpp</a> (689 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.4.0/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <p>Release date: 2018-10-30 <abbr title="Secure Hash Algorithm">SHA</abbr>-256: 63da6d1f22b2a7bb9e4ff7d6b255cf691a161ff49532dcc45d398a53e295835f (json.hpp), bfec46fc0cee01c509cf064d2254517e7fa80d1e7647fea37cf81d97c5682bdc (include.zip)</p> <h3 id=summary_7>Summary<a class=headerlink href=#summary_7 title="Permanent link">¶</a></h3> <p>This release introduces three new features:</p> <ul> <li><strong><abbr title="Binary JSON">BSON</abbr> (Binary <abbr title="JavaScript Object Notation">JSON</abbr>)</strong> is next to <abbr title="Concise Binary Object Representation">CBOR</abbr>, MessagePack, and <abbr title="Universal Binary JSON">UBJSON</abbr> the fourth binary (de)serialization format supported by the library.</li> <li><strong>Adjustable error handlers for invalid Unicode</strong> allows to specify the behavior when invalid byte sequences are serialized.</li> <li><strong>Simplified enum/<abbr title="JavaScript Object Notation">JSON</abbr> mapping</strong> with a macro in case the default mapping to integers is not desired.</li> </ul> <p>Furthermore, some effort has been invested in improving the <strong>parse error messages</strong>. Besides, a few bugs have been fixed. All changes are backward-compatible.</p> <h3 id=new-features_3><img alt="✨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/2728.svg" title=":sparkles:"> New Features<a class=headerlink href=#new-features_3 title="Permanent link">¶</a></h3> <ul> <li>The library can read and write a subset of <strong><a href="http://bsonspec.org/"><abbr title="Binary JSON">BSON</abbr></a> (Binary <abbr title="JavaScript Object Notation">JSON</abbr>)</strong>. All data types known from <abbr title="JavaScript Object Notation">JSON</abbr> are supported, whereas other types more tied to MongoDB such as timestamps, object ids, or binary data are currently not implemented. See <a href="https://github.com/nlohmann/json#binary-formats-bson-cbor-messagepack-and-ubjson">the README</a> for examples. #1244 #1320</li> <li>The behavior when the library encounters an invalid Unicode sequence during serialization can now be controlled by defining one of three <strong>Unicode error handlers</strong>: (1) throw an exception (default behavior), (2) replace invalid sequences by the Unicode replacement character (U+FFFD), or (3) ignore/filter invalid sequences. See the <a href="https://nlohmann.github.io/json/classnlohmann_1_1basic__json_a50ec80b02d0f3f51130d4abb5d1cfdc5.html#a50ec80b02d0f3f51130d4abb5d1cfdc5">documentation of the <code>dump</code> function</a> for examples. #1198 #1314</li> <li>To easily specify a user-defined <strong>enum/<abbr title="JavaScript Object Notation">JSON</abbr> mapping</strong>, a macro <code>NLOHMANN_JSON_SERIALIZE_ENUM</code> has been introduced. See the <a href="https://github.com/nlohmann/json#specializing-enum-conversion">README section</a> for more information. #1208 #1323</li> </ul> <h3 id=bug-fixes_7><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f41b.svg" title=":bug:"> Bug Fixes<a class=headerlink href=#bug-fixes_7 title="Permanent link">¶</a></h3> <ul> <li>fixed truncation #1286 #1315</li> <li>fixed an issue with std::pair #1299 #1301</li> <li>fixed an issue with std::variant #1292 #1294</li> <li>fixed a bug in the <abbr title="JavaScript Object Notation">JSON</abbr> Pointer parser</li> </ul> <h3 id=improvements_4><img alt="⚡" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/26a1.svg" title=":zap:"> Improvements<a class=headerlink href=#improvements_4 title="Permanent link">¶</a></h3> <ul> <li>The <strong>diagnosis messages for parse errors</strong> have been improved: error messages now indicated line/column positions where possible (in addition to a byte count) and also the context in which the error occurred (e.g., "while parsing a <abbr title="JavaScript Object Notation">JSON</abbr> string"). Example: error <code>parse error at 2: syntax error - invalid string: control character must be escaped; last read: '<U+0009>'</code> is now reported as <code>parse error at line 1, column 2: syntax error while parsing value - invalid string: control character U+0009 (HT) must be escaped to \u0009 or \t; last read: '<U+0009>'</code>. #1280 #1288 #1303</li> </ul> <h3 id=further-changes_6><img alt="🔨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f528.svg" title=":hammer:"> Further Changes<a class=headerlink href=#further-changes_6 title="Permanent link">¶</a></h3> <ul> <li>improved Meson documentation #1305</li> <li>fixed some more linter warnings #1280</li> <li>fixed Clang detection for third-party Google Benchmark library #1277</li> </ul> <h3 id=deprecated-functions_7><img alt="🔥" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f525.svg" title=":fire:"> Deprecated functions<a class=headerlink href=#deprecated-functions_7 title="Permanent link">¶</a></h3> <p>This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li>Function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e"><code>iterator_wrapper</code></a> are deprecated. Please use the member function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd"><code>items()</code></a> instead.</li> <li>Functions <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3"><code>friend std::istream& operator<<(basic_json&, std::istream&)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983"><code>friend std::ostream& operator>>(const basic_json&, std::ostream&)</code></a> are deprecated. Please use <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8"><code>friend std::istream& operator>>(std::istream&, basic_json&)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405"><code>friend operator<<(std::ostream&, const basic_json&)</code></a> instead.</li> </ul> <h2 id=v330>v3.3.0<a class=headerlink href=#v330 title="Permanent link">¶</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v3.3.0/include.zip">include.zip</a> (123 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.3.0/include.zip.asc">include.zip.asc</a> (1 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.3.0/json.hpp">json.hpp</a> (635 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.3.0/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <p>Release date: 2018-10-05 <abbr title="Secure Hash Algorithm">SHA</abbr>-256: f1327bb60c58757a3dd2b0c9c45d49503d571337681d950ec621f8374bcc14d4 (json.hpp), 9588d63557333aaa485e92221ec38014a85a6134e7486fe3441e0541a5a89576 (include.zip)</p> <h3 id=summary_8>Summary<a class=headerlink href=#summary_8 title="Permanent link">¶</a></h3> <p>This release adds support for <strong><abbr title="GNU Compiler Collection">GCC</abbr> 4.8</strong>. Furthermore, it adds a function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a8a3db7d78f74232d3a6fb8f1abf69709.html#a8a3db7d78f74232d3a6fb8f1abf69709"><strong><code>get_to</code></strong></a> to write a <abbr title="JavaScript Object Notation">JSON</abbr> value to a passed reference. Another topic of this release was the <strong>CMake support</strong> which has been overworked and documented.</p> <p>Besides, a lot of bugs have been fixed and slight improvements have been made. All changes are backward-compatible.</p> <h3 id=new-features_4><img alt="✨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/2728.svg" title=":sparkles:"> New Features<a class=headerlink href=#new-features_4 title="Permanent link">¶</a></h3> <ul> <li>The library can now also built with <strong><abbr title="GNU Compiler Collection">GCC</abbr> 4.8</strong>. Though this compiler does not fully support C++11, it can successfully compile and run the test suite. Note that bug <a href="https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57824">57824</a> in <abbr title="GNU Compiler Collection">GCC</abbr> 4.8 still forbids to use multiline raw strings in arguments to macros. #1257</li> <li>Added new function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a8a3db7d78f74232d3a6fb8f1abf69709.html#a8a3db7d78f74232d3a6fb8f1abf69709"><strong><code>get_to</code></strong></a> to write a <abbr title="JavaScript Object Notation">JSON</abbr> value to a passed reference. The destination type is automatically derived which allows more succinct code compared to the <code>get</code> function. #1227 #1231</li> </ul> <h3 id=bug-fixes_8><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f41b.svg" title=":bug:"> Bug Fixes<a class=headerlink href=#bug-fixes_8 title="Permanent link">¶</a></h3> <ul> <li>Fixed a bug in the CMake file that made <code>target_link_libraries</code> to not properly include <code>nlohmann_json</code>. #1243 #1245 #1260</li> <li>Fixed a warning in <abbr title="Microsoft Visual C++">MSVC</abbr> 2017 complaining about a constexpr if. #1204 #1268 #1272</li> <li>Fixed a bug that prevented compilation with ICPC. #755 #1222</li> <li>Improved the <abbr title="Substitution failure is not an error">SFINAE</abbr> correctness to fix a bug in the conversion operator. #1237 #1238</li> <li>Fixed a <code>-Wctor-dtor-privacy</code> warning. #1224</li> <li>Fixed a warning on a lambda in unevaluated context. #1225 #1230</li> <li>Fixed a bug introduced in version 3.2.0 where defining <code>JSON_CATCH_USER</code> led to duplicate macro definition of <code>JSON_INTERNAL_CATCH</code>. #1213 #1214</li> <li>Fixed a bug that prevented compilation with Clang 3.4.2 in RHEL 7. #1179 #1249</li> </ul> <h3 id=improvements_5><img alt="⚡" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/26a1.svg" title=":zap:"> Improvements<a class=headerlink href=#improvements_5 title="Permanent link">¶</a></h3> <ul> <li>Added <a href="https://github.com/nlohmann/json#cmake">documentation on CMake integration</a> of the library. #1270</li> <li>Changed the CMake file to use <code>find_package(nlohmann_json)</code> without installing the library. #1202</li> <li>Improved error messages in case <code>operator[]</code> is used with the wrong combination (json.exception.type_error.305) of <abbr title="JavaScript Object Notation">JSON</abbr> container type and argument type. Example: "cannot use operator[] with a string argument". #1220 #1221</li> <li>Added a license and version information to the Meson build file. #1252</li> <li>Removed static assertions to indicated missing <code>to_json</code> or <code>from_json</code> functions as such assertions do not play well with <abbr title="Substitution failure is not an error">SFINAE</abbr>. These assertions also led to problems with GMock. #960 #1212 #1228</li> <li>The test suite now does not wait forever if run in a wrong directory and input files are not found. #1262</li> <li>The test suite does not show deprecation warnings for deprecated functions which frequently led to confusion. #1271</li> </ul> <h3 id=further-changes_7><img alt="🔨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f528.svg" title=":hammer:"> Further Changes<a class=headerlink href=#further-changes_7 title="Permanent link">¶</a></h3> <ul> <li><abbr title="GNU Compiler Collection">GCC</abbr> 4.8 and Xcode 10 were added to the <a href="https://travis-ci.org/nlohmann/json">continuous integration suite</a> at Travis.</li> <li>Added <a href="https://lgtm.com/projects/g/nlohmann/json/context:cpp">lgtm</a> checks to pull requests.</li> <li>Added tests for CMake integration. #1260</li> </ul> <h3 id=deprecated-functions_8><img alt="🔥" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f525.svg" title=":fire:"> Deprecated functions<a class=headerlink href=#deprecated-functions_8 title="Permanent link">¶</a></h3> <p>This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li>Function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e"><code>iterator_wrapper</code></a> are deprecated. Please use the member function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd"><code>items()</code></a> instead.</li> <li>Functions <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3"><code>friend std::istream& operator<<(basic_json&, std::istream&)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983"><code>friend std::ostream& operator>>(const basic_json&, std::ostream&)</code></a> are deprecated. Please use <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8"><code>friend std::istream& operator>>(std::istream&, basic_json&)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405"><code>friend operator<<(std::ostream&, const basic_json&)</code></a> instead.</li> </ul> <h2 id=v320>v3.2.0<a class=headerlink href=#v320 title="Permanent link">¶</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v3.2.0/include.zip">include.zip</a> (124 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.2.0/include.zip.asc">include.zip.asc</a> (1 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.2.0/json.hpp">json.hpp</a> (636 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.2.0/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <p>Release date: 2018-08-20 <abbr title="Secure Hash Algorithm">SHA</abbr>-256: ce6b5610a051ec6795fa11c33854abebb086f0fd67c311f5921c3c07f9531b44 (json.hpp), 35ee642558b90e2f9bc758995c4788c4b4d4dec54eef95fb8f38cb4d49c8fc7c (include.zip)</p> <h3 id=summary_9>Summary<a class=headerlink href=#summary_9 title="Permanent link">¶</a></h3> <p>This release introduces a <a href="https://nlohmann.github.io/json/structnlohmann_1_1json__sax.html"><strong><abbr title="Simple API for XML">SAX</abbr> interface</strong></a> to the library. While this may be a very special feature used by only few people, it allowed to unify all functions that consumed input and created some kind of <abbr title="JavaScript Object Notation">JSON</abbr> value. Internally, now all existing functions like <code>parse</code>, <code>accept</code>, <code>from_cbor</code>, <code>from_msgpack</code>, and <code>from_ubjson</code> use the <abbr title="Simple API for XML">SAX</abbr> interface with different event processors. This allowed to separate the input processing from the value generation. Furthermore, throwing an exception in case of a parse error is now optional and up to the event processor. Finally, the <abbr title="JavaScript Object Notation">JSON</abbr> parser is now non-recursive (meaning it does not use the call stack, but <code>std::vector<bool></code> to track the hierarchy of structured values) which allows to process nested input more efficiently.</p> <p>Furthermore, the library finally is able to parse from <strong>wide string types</strong>. This is the first step toward opening the library from <abbr title="Unicode Transformation Format">UTF</abbr>-8 to <abbr title="Unicode Transformation Format">UTF</abbr>-16 and <abbr title="Unicode Transformation Format">UTF</abbr>-32.</p> <p>This release further fixes several bugs in the library. All changes are backward-compatible.</p> <h3 id=new-features_5><img alt="✨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/2728.svg" title=":sparkles:"> New Features<a class=headerlink href=#new-features_5 title="Permanent link">¶</a></h3> <ul> <li>added a parser with a <strong><abbr title="Simple API for XML">SAX</abbr> interface</strong> (#971, #1153)</li> <li>support to parse from <strong>wide string types</strong> <code>std::wstring</code>, <code>std::u16string</code>, and <code>std::u32string</code>; the input will be converted to <abbr title="Unicode Transformation Format">UTF</abbr>-8 (#1031)</li> <li>added support for <strong><code>std::string_view</code></strong> when using C++17 (#1028)</li> <li>allow to <strong>roundtrip <code>std::map</code> and <code>std::unordered_map</code></strong> from <abbr title="JavaScript Object Notation">JSON</abbr> if key type is not convertible to string; in these cases, values are serialized to arrays of pairs (#1079, #1089, #1133, #1138)</li> </ul> <h3 id=bug-fixes_9><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f41b.svg" title=":bug:"> Bug Fixes<a class=headerlink href=#bug-fixes_9 title="Permanent link">¶</a></h3> <ul> <li>allow to create <code>nullptr_t</code> from <abbr title="JavaScript Object Notation">JSON</abbr> allowing to properly roundtrip <code>null</code> values (#1169)</li> <li>allow compare user-defined string types (#1130)</li> <li>better support for algorithms using iterators from <code>items()</code> (#1045, #1134)</li> <li>added parameter to avoid compilation error with <abbr title="Microsoft Visual C++">MSVC</abbr> 2015 debug builds (#1114)</li> <li>re-added accidentally skipped unit tests (#1176)</li> <li>fixed <abbr title="Microsoft Visual C++">MSVC</abbr> issue with <code>std::swap</code> (#1168)</li> </ul> <h3 id=improvements_6><img alt="⚡" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/26a1.svg" title=":zap:"> Improvements<a class=headerlink href=#improvements_6 title="Permanent link">¶</a></h3> <ul> <li><code>key()</code> function for iterators returns a const reference rather than a string copy (#1098)</li> <li>binary formats <abbr title="Concise Binary Object Representation">CBOR</abbr>, MessagePack, and <abbr title="Universal Binary JSON">UBJSON</abbr> now supports <code>float</code> as type for floating-point numbers (#1021)</li> </ul> <h3 id=further-changes_8><img alt="🔨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f528.svg" title=":hammer:"> Further Changes<a class=headerlink href=#further-changes_8 title="Permanent link">¶</a></h3> <ul> <li>changed issue templates</li> <li>improved continuous integration: added builders for Xcode 9.3 and 9.4, added builders for <abbr title="GNU Compiler Collection">GCC</abbr> 8 and Clang 6, added builder for MinGW, added builders for <abbr title="Microsoft Visual C++">MSVC</abbr> targeting x86</li> <li>required CMake version is now at least 3.8 (#1040)</li> <li>overworked CMake file wrt. packaging (#1048)</li> <li>added package managers: Spack (#1041) and CocoaPods (#1148)</li> <li>fixed Meson include directory (#1142)</li> <li>preprocessor macro <code>JSON_SKIP_UNSUPPORTED_COMPILER_CHECK</code> can skip the rejection of unsupported compilers - use at your own risk! (#1128)</li> <li>preprocessor macro <code>JSON_INTERNAL_CATCH</code>/<code>JSON_INTERNAL_CATCH_USER</code> allows to control the behavior of exception handling inside the library (#1187)</li> <li>added note on <code>char</code> to <abbr title="JavaScript Object Notation">JSON</abbr> conversion</li> <li>added note how to send security-related issue via encrypted email</li> <li>removed dependency to <code>std::stringstream</code> (#1117)</li> <li>added <abbr title="Software Package Data Exchange">SPDX</abbr>-License-Identifier</li> <li>added updated <abbr title="JavaScript Object Notation">JSON</abbr> Parsing Test Suite, described in <a href="http://seriot.ch/parsing_json.php">Parsing <abbr title="JavaScript Object Notation">JSON</abbr> is a Minefield 💣</a></li> <li>updated to Catch 1.12.0</li> </ul> <h3 id=deprecated-functions_9><img alt="🔥" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f525.svg" title=":fire:"> Deprecated functions<a class=headerlink href=#deprecated-functions_9 title="Permanent link">¶</a></h3> <p>This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li>Function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e"><code>iterator_wrapper</code></a> are deprecated. Please use the member function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd"><code>items()</code></a> instead.</li> <li>Functions <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3"><code>friend std::istream& operator<<(basic_json&, std::istream&)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983"><code>friend std::ostream& operator>>(const basic_json&, std::ostream&)</code></a> are deprecated. Please use <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8"><code>friend std::istream& operator>>(std::istream&, basic_json&)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405"><code>friend operator<<(std::ostream&, const basic_json&)</code></a> instead.</li> </ul> <h2 id=v312>v3.1.2<a class=headerlink href=#v312 title="Permanent link">¶</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v3.1.2/include.zip">include.zip</a> (115 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.1.2/include.zip.asc">include.zip.asc</a> (1 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.1.2/json.hpp">json.hpp</a> (582 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.1.2/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <p>Release date: 2018-03-14 <abbr title="Secure Hash Algorithm">SHA</abbr>-256: fbdfec4b4cf63b3b565d09f87e6c3c183bdd45c5be1864d3fcb338f6f02c1733 (json.hpp), 495362ee1b9d03d9526ba9ccf1b4a9c37691abe3a642ddbced13e5778c16660c (include.zip)</p> <h3 id=summary_10>Summary<a class=headerlink href=#summary_10 title="Permanent link">¶</a></h3> <p>This release fixes several bugs in the library. All changes are backward-compatible.</p> <h3 id=bug-fixes_10><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f41b.svg" title=":bug:"> Bug Fixes<a class=headerlink href=#bug-fixes_10 title="Permanent link">¶</a></h3> <ul> <li>Fixed a <strong>memory leak</strong> occurring in the parser callback (#1001).</li> <li>Different <strong>specializations of <code>basic_json</code></strong> (e.g., using different template arguments for strings or objects) can now be used in assignments (#972, #977, #986).</li> <li>Fixed a logical error in an iterator range check (#992).</li> </ul> <h3 id=improvements_7><img alt="⚡" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/26a1.svg" title=":zap:"> Improvements<a class=headerlink href=#improvements_7 title="Permanent link">¶</a></h3> <ul> <li>The parser and the serialization now support <strong>user-defined string types</strong> (#1006, #1009).</li> </ul> <h3 id=further-changes_9><img alt="🔨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f528.svg" title=":hammer:"> Further Changes<a class=headerlink href=#further-changes_9 title="Permanent link">¶</a></h3> <ul> <li><strong><a href="http://clang-analyzer.llvm.org">Clang Analyzer</a></strong> is now used as additional static analyzer; see <code>make clang_analyze</code>.</li> <li>Overworked <a href="https://github.com/nlohmann/json/blob/develop/README.md">README</a> by adding links to the <a href="https://nlohmann.github.io/json/">documentation</a> (#981).</li> </ul> <h3 id=deprecated-functions_10><img alt="🔥" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f525.svg" title=":fire:"> Deprecated functions<a class=headerlink href=#deprecated-functions_10 title="Permanent link">¶</a></h3> <p>This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li>Function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e"><code>iterator_wrapper</code></a> are deprecated. Please use the member function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd"><code>items()</code></a> instead.</li> <li>Functions <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3"><code>friend std::istream& operator<<(basic_json&, std::istream&)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983"><code>friend std::ostream& operator>>(const basic_json&, std::ostream&)</code></a> are deprecated. Please use <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8"><code>friend std::istream& operator>>(std::istream&, basic_json&)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405"><code>friend operator<<(std::ostream&, const basic_json&)</code></a> instead.</li> </ul> <h2 id=v311>v3.1.1<a class=headerlink href=#v311 title="Permanent link">¶</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v3.1.1/include.zip">include.zip</a> (114 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.1.1/include.zip.asc">include.zip.asc</a> (1 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.1.1/json.hpp">json.hpp</a> (577 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.1.1/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <p>Release date: 2018-02-13 <abbr title="Secure Hash Algorithm">SHA</abbr>-256: e14ce5e33d6a2daf748026bd4947f3d9686ca4cfd53d10c3da46a0a9aceb7f2e (json.hpp), fde771d4b9e4f222965c00758a2bdd627d04fb7b59e09b7f3d1965abdc848505 (include.zip)</p> <h3 id=summary_11>Summary<a class=headerlink href=#summary_11 title="Permanent link">¶</a></h3> <p>This release fixes several bugs in the library. All changes are backward-compatible.</p> <h3 id=bug-fixes_11><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f41b.svg" title=":bug:"> Bug Fixes<a class=headerlink href=#bug-fixes_11 title="Permanent link">¶</a></h3> <ul> <li>Fixed parsing of <strong><abbr title="Concise Binary Object Representation">CBOR</abbr> strings with indefinite length</strong> (#961). Earlier versions of this library misinterpreted the <abbr title="Concise Binary Object Representation">CBOR</abbr> standard and rejected input with the <code>0x7F</code> start byte.</li> <li>Fixed user-defined <strong>conversion to vector type</strong> (#924, #969). A wrong <abbr title="Substitution failure is not an error">SFINAE</abbr> check rejected code though a user-defined conversion was provided.</li> <li>Fixed documentation of the parser behavior for <strong>objects with duplicate keys</strong> (#963). The exact behavior is not specified by <a href="https://tools.ietf.org/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259</a> and the library now also provides no guarantee which object key is stored.</li> <li>Added check to detect memory <strong>overflow when parsing <abbr title="Universal Binary JSON">UBJSON</abbr> containers</strong> (#962). The optimized <abbr title="Universal Binary JSON">UBJSON</abbr> format allowed for specifying an array with billions of <code>null</code> elements with a few bytes and the library did not check whether this size exceeded <code>max_size()</code>.</li> </ul> <h3 id=further-changes_10><img alt="🔨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f528.svg" title=":hammer:"> Further Changes<a class=headerlink href=#further-changes_10 title="Permanent link">¶</a></h3> <ul> <li><a href="https://coveralls.io/github/nlohmann/json">Code coverage</a> is now calculated for the individual header files, allowing to find uncovered lines more quickly than by browsing through the single header version (#953, #957).</li> <li>A Makefile target <code>run_benchmarks</code> was added to quickly build and run the benchmark suite.</li> <li>The documentation was harmonized with respect to the header inclusion (#955). Now all examples and the README use <code>#include <nlohmann/json.hpp></code> to allow for selecting <code>single_include</code> or <code>include</code> or whatever installation folder as include directory.</li> <li>Added note on how to use the library with the <a href="http://cget.readthedocs.io/en/latest/">cget</a> package manager (#954).</li> </ul> <h3 id=deprecated-functions_11><img alt="🔥" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f525.svg" title=":fire:"> Deprecated functions<a class=headerlink href=#deprecated-functions_11 title="Permanent link">¶</a></h3> <p>This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li>Function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e"><code>iterator_wrapper</code></a> are deprecated. Please use the member function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd"><code>items()</code></a> instead.</li> <li>Functions <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3"><code>friend std::istream& operator<<(basic_json&, std::istream&)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983"><code>friend std::ostream& operator>>(const basic_json&, std::ostream&)</code></a> are deprecated. Please use <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8"><code>friend std::istream& operator>>(std::istream&, basic_json&)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405"><code>friend operator<<(std::ostream&, const basic_json&)</code></a> instead.</li> </ul> <h2 id=v310>v3.1.0<a class=headerlink href=#v310 title="Permanent link">¶</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v3.1.0/include.zip">include.zip</a> (114 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.1.0/include.zip.asc">include.zip.asc</a> (1 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.1.0/json.hpp">json.hpp</a> (577 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.1.0/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <p>Release date: 2018-02-01 <abbr title="Secure Hash Algorithm">SHA</abbr>-256: d40f614d10a6e4e4e80dca9463da905285f20e93116c36d97d4dc1aa63d10ba4 (json.hpp), 2b7234fca394d1e27b7e017117ed80b7518fafbb4f4c13a7c069624f6f924673 (include.zip)</p> <h3 id=summary_12>Summary<a class=headerlink href=#summary_12 title="Permanent link">¶</a></h3> <p>This release adds support for the <a href="http://ubjson.org"><strong><abbr title="Universal Binary JSON">UBJSON</abbr></strong></a> format and <a href="https://tools.ietf.org/html/rfc7386"><strong><abbr title="JavaScript Object Notation">JSON</abbr> Merge Patch</strong></a>. It also contains some minor changes and bug fixes. All changes are backward-compatible.</p> <h3 id=new-features_6><img alt="✨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/2728.svg" title=":sparkles:"> New features<a class=headerlink href=#new-features_6 title="Permanent link">¶</a></h3> <ul> <li>The library now supports <a href="http://ubjson.org"><strong><abbr title="Universal Binary JSON">UBJSON</abbr></strong></a> (Universal Binary <abbr title="JavaScript Object Notation">JSON</abbr> Specification) as binary format to read and write <abbr title="JavaScript Object Notation">JSON</abbr> values space-efficiently. See the <a href="https://json.nlohmann.me/features/binary_formats/">documentation overview</a> for a comparison of the different formats <abbr title="Concise Binary Object Representation">CBOR</abbr>, MessagePack, and <abbr title="Universal Binary JSON">UBJSON</abbr>.</li> <li><a href="https://tools.ietf.org/html/rfc7386"><strong><abbr title="JavaScript Object Notation">JSON</abbr> Merge Patch</strong></a> (<abbr title="Request for Comments">RFC</abbr> 7386) offers an intuitive means to describe patches between <abbr title="JavaScript Object Notation">JSON</abbr> values (#876, #877). See the documentation of <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a0ec0cd19cce42ae6071f3cc6870ea295.html#a0ec0cd19cce42ae6071f3cc6870ea295"><code>merge_patch</code></a> for more information.</li> </ul> <h3 id=improvements_8><img alt="⚡" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/26a1.svg" title=":zap:"> Improvements<a class=headerlink href=#improvements_8 title="Permanent link">¶</a></h3> <ul> <li>The library now uses the <strong>Grisu2 algorithm</strong> for printing floating-point numbers (based on the reference implementation by Florian Loitsch) which produces a short representation which is guaranteed to round-trip (#360, #935, #936).</li> <li>The <strong><abbr title="Unicode Transformation Format">UTF</abbr>-8 handling</strong> was further simplified by using the decoder of Björn Hoehrmann in more scenarios.</li> </ul> <h3 id=reorganization><img alt="🚚" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f69a.svg" title=":truck:"> Reorganization<a class=headerlink href=#reorganization title="Permanent link">¶</a></h3> <ul> <li>Though the library is released as a single header, its development got more and more complicated. With this release, the header is <strong>split into several files</strong> and the single-header file <code>json.hpp</code> can be generated from these development sources. In the repository, folder <code>include</code> contains the development sources and <code>single_include</code> contains the single <code>json.hpp</code> header (#700, #906, #907, #910, #911, #915, #920, #924, #925, #928, #944).</li> <li>The split further allowed for a <strong>forward declaration header</strong> <code>include/nlohmann/json_fwd.hpp</code> to speed up compilation times (#314).</li> </ul> <h3 id=further-changes_11><img alt="🔨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f528.svg" title=":hammer:"> Further changes<a class=headerlink href=#further-changes_11 title="Permanent link">¶</a></h3> <ul> <li><a href="https://github.com/google/benchmark">Google Benchmark</a> is now used for micro benchmarks (see <code>benchmarks</code> folder, #921).</li> <li>The serialization (<abbr title="JavaScript Object Notation">JSON</abbr> and binary formats) now properly work with the libraries string template parameter, allowing for optimized string implementations to be used in constraint environments such as embedded software (#941, #950).</li> <li>The exceptional behavior can now be overridden by defining macros <code>JSON_THROW_USER</code>, <code>JSON_TRY_USER</code>, and <code>JSON_CATCH_USER</code>, defining the behavior of <code>throw</code>, <code>try</code> and <code>catch</code>, respectively. This allows to switch off C++'s exception mechanism yet still execute user-defined code in case an error condition occurs (#938).</li> <li>To facilitate the interplay with <a href="https://github.com/westes/flex">flex</a> and <a href="https://www.gnu.org/software/bison/">Bison</a>, the library does not use the variable name <code>yytext</code> any more as it could clash with macro definitions (#933).</li> <li>The library now defines <code>NLOHMANN_JSON_VERSION_MAJOR</code>, <code>NLOHMANN_JSON_VERSION_MINOR</code>, and <code>NLOHMANN_JSON_VERSION_PATCH</code> to allow for conditional compilation based on the included library version (#943, #948).</li> <li>A compilation error with <abbr title="Intel C++ Compiler">ICC</abbr> has been fixed (#947).</li> <li>Typos and links in the documentation have been fixed (#900, #930).</li> <li>A compiler error related to incomplete types has been fixed (#919).</li> <li>The tests form the <a href="http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt"><abbr title="Unicode Transformation Format">UTF</abbr>-8 decoder stress test</a> have been added to the test suite.</li> </ul> <h3 id=deprecated-functions_12><img alt="🔥" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f525.svg" title=":fire:"> Deprecated functions<a class=headerlink href=#deprecated-functions_12 title="Permanent link">¶</a></h3> <ul> <li>Function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e"><code>iterator_wrapper</code></a> has been deprecated (#874). Since its introduction, the name was up for discussion, as it was too technical. We now introduced the member function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd"><code>items()</code></a> with the same semantics. <code>iterator_wrapper</code> will be removed in the next major version (i.e., 4.0.0).</li> </ul> <p>Furthermore, the following functions are deprecated since version 3.0.0 and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li><a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3"><code>friend std::istream& operator<<(basic_json&, std::istream&)</code></a></li> <li><a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983"><code>friend std::ostream& operator>>(const basic_json&, std::ostream&)</code></a></li> </ul> <p>Please use <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8"><code>friend std::istream& operator>>(std::istream&, basic_json&)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405"><code>friend operator<<(std::ostream&, const basic_json&)</code></a> instead.</p> <h2 id=v301>v3.0.1<a class=headerlink href=#v301 title="Permanent link">¶</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v3.0.1/json.hpp">json.hpp</a> (502 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.0.1/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <p>Release date: 2017-12-29 <abbr title="Secure Hash Algorithm">SHA</abbr>-256: c9b3591f1bb94e723a0cd7be861733a3a555b234ef132be1e9027a0364118c4c</p> <h3 id=summary_13>Summary<a class=headerlink href=#summary_13 title="Permanent link">¶</a></h3> <p>This release fixes small issues in the implementation of <strong><abbr title="JavaScript Object Notation">JSON</abbr> Pointer</strong> and <strong><abbr title="JavaScript Object Notation">JSON</abbr> Patch</strong>. All changes are backward-compatible.</p> <h3 id=changes>Changes<a class=headerlink href=#changes title="Permanent link">¶</a></h3> <ul> <li><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f41b.svg" title=":bug:"> The <strong>"copy" operation of <abbr title="JavaScript Object Notation">JSON</abbr> Patch</strong> (<a href="https://tools.ietf.org/html/rfc6902"><abbr title="Request for Comments">RFC</abbr> 6902</a>) requests that it is an error if the target path points into a non-existing array or object (see #894 for a detailed description). This release fixes the implementation to detect such invalid target paths and throw an exception.</li> <li><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f41b.svg" title=":bug:"> An <strong>array index in a <abbr title="JavaScript Object Notation">JSON</abbr> Pointer</strong> (<a href="https://tools.ietf.org/html/rfc6901"><abbr title="Request for Comments">RFC</abbr> 6901</a>) must be an integer. This release fixes the implementation to throw an exception in case invalid array indices such as <code>10e2</code> are used.</li> <li><img alt="✅" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/2705.svg" title=":white_check_mark:"> Added the <a href="https://github.com/json-patch/json-patch-tests"><abbr title="JavaScript Object Notation">JSON</abbr> Patch tests</a> from Byron Ruth and Mike McCabe.</li> <li><img alt="📝" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f4dd.svg" title=":memo:"> Fixed the documentation of the <a href="https://nlohmann.github.io/json/classnlohmann_1_1basic__json_a8ab61397c10f18b305520da7073b2b45.html#a8ab61397c10f18b305520da7073b2b45"><code>at(ptr)</code> function with <abbr title="JavaScript Object Notation">JSON</abbr> Pointers</a> to list all possible exceptions (see #888).</li> <li><img alt="📝" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f4dd.svg" title=":memo:"> Updated the <a href="https://nlohmann.github.io/json/">container overview documentation</a> (see #883).</li> <li><img alt="🔧" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f527.svg" title=":wrench:"> The CMake files now respect the <a href="https://cmake.org/cmake/help/latest/module/CTest.html?highlight=build_testing"><code>BUILD_TESTING</code></a> option (see #846, #885)</li> <li><img alt="🚨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f6a8.svg" title=":rotating_light:"> Fixed some compiler warnings (see #858, #882).</li> </ul> <h3 id=deprecated-functions_13>Deprecated functions<a class=headerlink href=#deprecated-functions_13 title="Permanent link">¶</a></h3> <p><img alt="🔥" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f525.svg" title=":fire:"> To unify the interfaces and to improve similarity with the <abbr title="Standard Template Library">STL</abbr>, the following functions are deprecated since version 3.0.0 and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li><a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3"><code>friend std::istream& operator<<(basic_json&, std::istream&)</code></a></li> <li><a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983"><code>friend std::ostream& operator>>(const basic_json&, std::ostream&)</code></a></li> </ul> <p>Please use <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8"><code>friend std::istream& operator>>(std::istream&, basic_json&)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405"><code>friend operator<<(std::ostream&, const basic_json&)</code></a> instead.</p> <h2 id=v300>v3.0.0<a class=headerlink href=#v300 title="Permanent link">¶</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v3.0.0/json.hpp">json.hpp</a> (501 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v3.0.0/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <p>Release date: 2017-12-17 <abbr title="Secure Hash Algorithm">SHA</abbr>-256: 076d4a0cb890a3c3d389c68421a11c3d77c64bd788e85d50f1b77ed252f2a462</p> <h3 id=summary_14>Summary<a class=headerlink href=#summary_14 title="Permanent link">¶</a></h3> <p><img src="../../assets/external/user-images.githubusercontent.com/159488/34072418-8f5ba396-e287-11e7-9de7-8bc7482ac23c.png" align="right"></p> <p>After almost a year, here is finally a new release of <abbr title="JavaScript Object Notation">JSON</abbr> for Modern C++, and it is a major one! As we adhere to <a href="https://semver.org">semantic versioning</a>, this means the release includes some breaking changes, so please read the next section carefully before you update. But don't worry, we also added a few new features and put a lot of effort into fixing a lot of bugs and straighten out a few inconsistencies.</p> <h3 id=breaking-changes><img alt="💥" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f4a5.svg" title=":boom:"> Breaking changes<a class=headerlink href=#breaking-changes title="Permanent link">¶</a></h3> <p>This section describes changes that change the public <abbr title="Application Programming Interfaces">API</abbr> of the library and may require changes in code using a previous version of the library. In section "Moving from 2.x.x to 3.0.0" at the end of the release notes, we describe in detail how existing code needs to be changed.</p> <ul> <li>The library now uses <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9a0aced019cb1d65bb49703406c84970.html#a9a0aced019cb1d65bb49703406c84970"><strong>user-defined exceptions</strong></a> instead of re-using those defined in <code><stdexcept></code> (#244). This not only allows to add more information to the exceptions (every exception now has an identifier, and parse errors contain the position of the error), but also to easily catch all library exceptions with a single <code>catch(json::exception)</code>.</li> <li>When strings with a different encoding as <abbr title="Unicode Transformation Format">UTF</abbr>-8 were stored in <abbr title="JavaScript Object Notation">JSON</abbr> values, their serialization could not be parsed by the library itself, as only <abbr title="Unicode Transformation Format">UTF</abbr>-8 is supported. To enforce this library limitation and improve consistency, <strong>non-<abbr title="Unicode Transformation Format">UTF</abbr>-8 encoded strings now yield a <code>json::type_error</code> exception during serialization</strong> (#838). The check for valid <abbr title="Unicode Transformation Format">UTF</abbr>-8 is realized with code from <a href="http://bjoern.hoehrmann.de/">Björn Hoehrmann</a>.</li> <li><strong><abbr title="Not a Number">NaN</abbr> and infinity values can now be stored inside the <abbr title="JavaScript Object Notation">JSON</abbr> value</strong> without throwing an exception. They are, however, still serialized as <code>null</code> (#388).</li> <li>The library's iterator tag was changed from RandomAccessIterator to <strong><a href="https://en.cppreference.com/w/cpp/named_req/BidirectionalIterator">BidirectionalIterator</a></strong> (#593). Supporting RandomAccessIterator was incorrect as it assumed an ordering of values in a <abbr title="JavaScript Object Notation">JSON</abbr> objects which are unordered by definition.</li> <li>The library does not include the standard headers <code><iostream></code>, <code><ctype></code>, and <code><stdexcept></code> any more. You may need to add these headers to code relying on them.</li> <li>Removed constructor <code>explicit basic_json(std::istream& i, const parser_callback_t cb = nullptr)</code> which was deprecated in version 2.0.0 (#480).</li> </ul> <h3 id=deprecated-functions_14><img alt="🔥" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f525.svg" title=":fire:"> Deprecated functions<a class=headerlink href=#deprecated-functions_14 title="Permanent link">¶</a></h3> <p>To unify the interfaces and to improve similarity with the <abbr title="Standard Template Library">STL</abbr>, the following functions are now deprecated and will be removed in the next major version (i.e., 4.0.0):</p> <ul> <li><a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3"><code>friend std::istream& operator<<(basic_json&, std::istream&)</code></a></li> <li><a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983"><code>friend std::ostream& operator>>(const basic_json&, std::ostream&)</code></a></li> </ul> <p>Please use <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8"><code>friend std::istream& operator>>(std::istream&, basic_json&)</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405"><code>friend operator<<(std::ostream&, const basic_json&)</code></a> instead.</p> <h3 id=new-features_7><img alt="✨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/2728.svg" title=":sparkles:"> New features<a class=headerlink href=#new-features_7 title="Permanent link">¶</a></h3> <p>With all this breaking and deprecation out of the way, let's talk about features!</p> <ul> <li>We improved the <strong>diagnostic information for syntax errors</strong> (#301). Now, an exception <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1efc2468e6022be6e35fc2944cabe4d.html#af1efc2468e6022be6e35fc2944cabe4d"><code>json::parse_error</code></a> is thrown which contains a detailed message on the error, but also a member <code>byte</code> to indicate the byte offset in the input where the error occurred.</li> <li>We added a <strong>non-throwing syntax check</strong> (#458): The new <code>accept</code> function returns a Boolean indicating whether the input is proper <abbr title="JavaScript Object Notation">JSON</abbr>. We also added a Boolean parameter <code>allow_exceptions</code> to the existing <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aa9676414f2e36383c4b181fe856aa3c0.html#aa9676414f2e36383c4b181fe856aa3c0"><code>parse</code></a> functions to return a <code>discarded</code> value in case a syntax error occurs instead of throwing an exception.</li> <li>An <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a1cfa9ae5e7c2434cab4cfe69bffffe11.html#a1cfa9ae5e7c2434cab4cfe69bffffe11"><code>update</code></a> function was added to <strong>merge two <abbr title="JavaScript Object Notation">JSON</abbr> objects</strong> (#428). In case you are wondering: the name was inspired by <a href="https://docs.python.org/2/library/stdtypes.html#dict.update">Python</a>.</li> <li>The <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a1b0a4e60d56f1fe80501ed941e122892.html#a1b0a4e60d56f1fe80501ed941e122892"><code>insert</code></a> function now also supports an iterator range to add elements to an object.</li> <li>The binary exchange formats <strong><abbr title="Concise Binary Object Representation">CBOR</abbr> and MessagePack can now be parsed from input streams and written to output streams</strong> (#477).</li> <li>Input streams are now only read until the end of a <abbr title="JavaScript Object Notation">JSON</abbr> value instead of the end of the input (#367).</li> <li>The serialization function <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5adea76fedba9898d404fef8598aa663.html#a5adea76fedba9898d404fef8598aa663"><code>dump</code></a> now has two optional parameters <code>ensure_ascii</code> to <strong>escape all non-<abbr title="American Standard Code for Information Interchange">ASCII</abbr> characters</strong> with <code>\uxxxx</code> and an <code>indent_char</code> parameter to choose whether to <strong>indent with spaces or tabs</strong> (#654). </li> <li>Added <strong>built-in type support</strong> for C arrays (#502), <code>std::pair</code> and <code>std::tuple</code> (#563, #614), <code>enum</code> and <code>enum class</code> (#545), <code>std::vector<bool></code> (#494). Fixed support for <code>std::valarray</code> (#702), <code>std::array</code> (#553), and <code>std::map<std::string, std::string></code> (#600, #607).</li> </ul> <h3 id=further-changes_12><img alt="🔨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f528.svg" title=":hammer:"> Further changes<a class=headerlink href=#further-changes_12 title="Permanent link">¶</a></h3> <p>Furthermore, there have been a lot of changes under the hood:</p> <ul> <li>Replaced the <a href="http://re2c.org">re2c</a> generated scanner by a self-coded version which allows for a better modularization of the parser and better diagnostics. To test the new scanner, we added millions (8,860,608 to be exact) of unit tests to check all valid and invalid byte sequences of the Unicode standard.</li> <li>Google's OSS-Fuzz is still constantly fuzz-testing the library and found several issues that were fixed in this release (#497, #504, #514, #516, #518, #519, #575).</li> <li>We now also ignore <abbr title="Unicode Transformation Format">UTF</abbr>-8 byte order marks when parsing from an iterator range (#602).</li> <li>Values can be now moved from initializer lists (#663).</li> <li>Updated to <a href="https://github.com/catchorg/Catch2">Catch</a> 1.9.7. Unfortunately, Catch2 currently has some performance issues.</li> <li>The non-exceptional paths of the library are now annotated with <code>__builtin_expect</code> to optimize branch prediction as long as no error occurs.</li> <li><abbr title="Microsoft Visual C++">MSVC</abbr> now produces a stack trace in <abbr title="Microsoft Visual C++">MSVC</abbr> if a <code>from_json</code> or <code>to_json</code> function was not found for a user-defined type. We also added a debug visualizer <a href="https://github.com/nlohmann/json/blob/develop/nlohmann_json.natvis"><code>nlohmann_json.natvis</code></a> for better debugging in <abbr title="Microsoft Visual C++">MSVC</abbr> (#844).</li> <li>Overworked the documentation and added even more examples.</li> <li>The build workflow now relies on CMake and CTest. Special flags can be chosen with CMake, including coverage (<code>JSON_Coverage</code>), compilation without exceptions (<code>JSON_NoExceptions</code>), LLVM sanitizers (<code>JSON_Sanitizer</code>), or execution with Valgrind (<code>JSON_Valgrind</code>).</li> <li>Added support for package managers Meson (#576), Conan (#566), Hunter (#671, #829), and vcpkg (#753).</li> <li>Added <abbr title="Continuous Integration">CI</abbr> builders: Xcode 8.3, 9.0, 9.1, and 9.2; <abbr title="GNU Compiler Collection">GCC</abbr> 7.2; Clang 3.8, 3.9, 4.0, and 5.0; Visual Studio 2017. The library is further built with C++17 settings on the latest Clang, <abbr title="GNU Compiler Collection">GCC</abbr>, and <abbr title="Microsoft Visual C++">MSVC</abbr> version to quickly detect new issues.</li> </ul> <h3 id=moving-from-2xx-to-300>Moving from 2.x.x to 3.0.0<a class=headerlink href=#moving-from-2xx-to-300 title="Permanent link">¶</a></h3> <h4 id=user-defined-exceptions>User-defined Exceptions<a class=headerlink href=#user-defined-exceptions title="Permanent link">¶</a></h4> <p>There are five different exceptions inheriting from <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a9a0aced019cb1d65bb49703406c84970.html#a9a0aced019cb1d65bb49703406c84970"><code>json::exception</code></a>:</p> <ul> <li><a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af1efc2468e6022be6e35fc2944cabe4d.html#af1efc2468e6022be6e35fc2944cabe4d"><code>json::parse_error</code></a> for syntax errors (including the binary formats),</li> <li><a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_ac13d32f7cbd02d616e71d8dc30dadcbf.html#ac13d32f7cbd02d616e71d8dc30dadcbf"><code>json::invalid_iterator</code></a> for errors related to iterators,</li> <li><a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a4010e8e268fefd86da773c10318f2902.html#a4010e8e268fefd86da773c10318f2902"><code>json::type_error</code></a> for errors where functions were called with the wrong <abbr title="JavaScript Object Notation">JSON</abbr> type,</li> <li><a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a28f7c2f087274a0012eb7a2333ee1580.html#a28f7c2f087274a0012eb7a2333ee1580"><code>json::out_of_range</code></a> for range errors, and</li> <li><a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a3333a5a8714912adda33a35b369f7b3d.html#a3333a5a8714912adda33a35b369f7b3d"><code>json::other_error</code></a> for miscellaneous errors.</li> </ul> <p>To support these exception, the <code>try</code>/<code>catch</code> blocks of your code need to be adjusted:</p> <table> <thead> <tr> <th style="text-align: left;">new exception</th> <th style="text-align: left;">previous exception</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">parse_error.101</td> <td style="text-align: left;">invalid_argument</td> </tr> <tr> <td style="text-align: left;">parse_error.102</td> <td style="text-align: left;">invalid_argument</td> </tr> <tr> <td style="text-align: left;">parse_error.103</td> <td style="text-align: left;">invalid_argument</td> </tr> <tr> <td style="text-align: left;">parse_error.104</td> <td style="text-align: left;">invalid_argument</td> </tr> <tr> <td style="text-align: left;">parse_error.105</td> <td style="text-align: left;">invalid_argument</td> </tr> <tr> <td style="text-align: left;">parse_error.106</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">parse_error.107</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">parse_error.108</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">parse_error.109</td> <td style="text-align: left;">invalid_argument</td> </tr> <tr> <td style="text-align: left;">parse_error.110</td> <td style="text-align: left;">out_of_range</td> </tr> <tr> <td style="text-align: left;">parse_error.111</td> <td style="text-align: left;">invalid_argument</td> </tr> <tr> <td style="text-align: left;">parse_error.112</td> <td style="text-align: left;">invalid_argument</td> </tr> <tr> <td style="text-align: left;">invalid_iterator.201</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">invalid_iterator.202</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">invalid_iterator.203</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">invalid_iterator.204</td> <td style="text-align: left;">out_of_range</td> </tr> <tr> <td style="text-align: left;">invalid_iterator.205</td> <td style="text-align: left;">out_of_range</td> </tr> <tr> <td style="text-align: left;">invalid_iterator.206</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">invalid_iterator.207</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">invalid_iterator.208</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">invalid_iterator.209</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">invalid_iterator.210</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">invalid_iterator.211</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">invalid_iterator.212</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">invalid_iterator.213</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">invalid_iterator.214</td> <td style="text-align: left;">out_of_range</td> </tr> <tr> <td style="text-align: left;">type_error.301</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">type_error.302</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">type_error.303</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">type_error.304</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">type_error.305</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">type_error.306</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">type_error.307</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">type_error.308</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">type_error.309</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">type_error.310</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">type_error.311</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">type_error.313</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">type_error.314</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">type_error.315</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">out_of_range.401</td> <td style="text-align: left;">out_of_range</td> </tr> <tr> <td style="text-align: left;">out_of_range.402</td> <td style="text-align: left;">out_of_range</td> </tr> <tr> <td style="text-align: left;">out_of_range.403</td> <td style="text-align: left;">out_of_range</td> </tr> <tr> <td style="text-align: left;">out_of_range.404</td> <td style="text-align: left;">out_of_range</td> </tr> <tr> <td style="text-align: left;">out_of_range.405</td> <td style="text-align: left;">domain_error</td> </tr> <tr> <td style="text-align: left;">other_error.501</td> <td style="text-align: left;">domain_error</td> </tr> </tbody> </table> <h4 id=handling-of-nan-and-inf>Handling of <abbr title="Not a Number">NaN</abbr> and INF<a class=headerlink href=#handling-of-nan-and-inf title="Permanent link">¶</a></h4> <ul> <li> <p>If an overflow occurs during parsing a number from a <abbr title="JavaScript Object Notation">JSON</abbr> text, an exception <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a28f7c2f087274a0012eb7a2333ee1580.html#a28f7c2f087274a0012eb7a2333ee1580"><code>json::out_of_range</code></a> is thrown so that the overflow is detected early and roundtripping is guaranteed.</p> </li> <li> <p><abbr title="Not a Number">NaN</abbr> and INF floating-point values can be stored in a <abbr title="JavaScript Object Notation">JSON</abbr> value and are not replaced by null. That is, the basic_json class behaves like <code>double</code> in this regard (no exception occurs). However, <abbr title="Not a Number">NaN</abbr> and INF are serialized to <code>null</code>.</p> </li> </ul> <h4 id=removal-of-deprecated-functions>Removal of deprecated functions<a class=headerlink href=#removal-of-deprecated-functions title="Permanent link">¶</a></h4> <p>Function <code>explicit basic_json(std::istream& i, const parser_callback_t cb = nullptr)</code> should be replaced by the <code>parse</code> function: Let <code>ss</code> be a stream and <code>cb</code> be a parse callback function.</p> <p>Old code:</p> <div class=highlight><pre><span></span><code><span class=n>json</span><span class=w> </span><span class=nf>j</span><span class=p>(</span><span class=n>ss</span><span class=p>,</span><span class=w> </span><span class=n>cb</span><span class=p>);</span>
|
||
</code></pre></div> <p>New code:</p> <div class=highlight><pre><span></span><code><span class=n>json</span><span class=w> </span><span class=n>j</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>json</span><span class=o>::</span><span class=n>parse</span><span class=p>(</span><span class=n>ss</span><span class=p>,</span><span class=w> </span><span class=n>cb</span><span class=p>);</span>
|
||
</code></pre></div> <p>If no callback function is used, also the following code works:</p> <div class=highlight><pre><span></span><code><span class=n>json</span><span class=w> </span><span class=n>j</span><span class=p>;</span>
|
||
<span class=n>j</span><span class=w> </span><span class=o><<</span><span class=w> </span><span class=n>ss</span><span class=p>;</span>
|
||
</code></pre></div> <p>or</p> <div class=highlight><pre><span></span><code><span class=n>json</span><span class=w> </span><span class=n>j</span><span class=p>;</span>
|
||
<span class=n>ss</span><span class=w> </span><span class=o>>></span><span class=w> </span><span class=n>j</span><span class=p>;</span>
|
||
</code></pre></div> <h2 id=v211>v2.1.1<a class=headerlink href=#v211 title="Permanent link">¶</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v2.1.1/json.hpp">json.hpp</a> (437 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v2.1.1/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <p>Release date: 2017-02-25 <abbr title="Secure Hash Algorithm">SHA</abbr>-256: faa2321beb1aa7416d035e7417fcfa59692ac3d8c202728f9bcc302e2d558f57</p> <h3 id=summary_15>Summary<a class=headerlink href=#summary_15 title="Permanent link">¶</a></h3> <p>This release <strong>fixes a locale-related bug in the parser</strong>. To do so, the whole number handling (lexer, parser, and also the serialization) have been overworked. Furthermore, a lot of small changes added up that were added to this release. All changes are backward-compatible.</p> <h3 id=changes_1>Changes<a class=headerlink href=#changes_1 title="Permanent link">¶</a></h3> <ul> <li><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f41b.svg" title=":bug:"> Locales that have a different character than <code>.</code> as decimal separator (e.g., the Norwegian locale <code>nb_NO.UTF-8</code>) led to truncated number parsing or parse errors. The library now has been fixed to work with <strong>any locale</strong>. Note that <code>.</code> is still the only valid decimal separator for <abbr title="JavaScript Object Notation">JSON</abbr> input.</li> <li><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f41b.svg" title=":bug:"> Numbers like <code>1.0</code> were correctly parsed as floating-point number, but serialized as integer (<code>1</code>). Now, <strong>floating-point numbers correctly round trip</strong>.</li> <li><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f41b.svg" title=":bug:"> Parsing incorrect <abbr title="JavaScript Object Notation">JSON</abbr> numbers with leading 0 (<code>0123</code>) could yield a <a href="https://github.com/nlohmann/json/issues/452">buffer overflow</a>. This is fixed now by detecting such errors directly by the lexer.</li> <li><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f41b.svg" title=":bug:"> Constructing a <abbr title="JavaScript Object Notation">JSON</abbr> value from a pointer was incorrectly interpreted as a Boolean; such code will now yield a compiler error.</li> <li><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f41b.svg" title=":bug:"> Comparing a <abbr title="JavaScript Object Notation">JSON</abbr> number with <code>0</code> led to a comparison with <code>null</code>. This is fixed now.</li> <li><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f41b.svg" title=":bug:"> All throw calls are now wrapped in macros.</li> <li><img alt="🔒" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f512.svg" title=":lock:"> Starting during the preparation of this release (since 8 February 2017), commits and released files are <strong>cryptographically signed</strong> with <a href="https://keybase.io/nlohmann/pgp_keys.asc?fingerprint=797167ae41c0a6d9232e48457f3cea63ae251b69">this GPG key</a>. Previous releases have also been signed.</li> <li><img alt="✨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/2728.svg" title=":sparkles:"> The parser for MessagePack and <abbr title="Concise Binary Object Representation">CBOR</abbr> now supports an optional start index parameter to define a byte offset for the parser.</li> <li><img alt="🚨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f6a8.svg" title=":rotating_light:"> Some more warnings have been fixed. With Clang, the code compiles <strong>without warnings</strong> with <code>-Weverything</code> (well, it needs <code>-Wno-documentation-unknown-command</code> and <code>-Wno-deprecated-declarations</code>, but you get the point).</li> <li><img alt="🔨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f528.svg" title=":hammer:"> The code can be compiled easier with many Android NDKs by avoiding macros like <code>UINT8_MAX</code> which previously required defining a preprocessor macro for compilation.</li> <li><img alt="⚡" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/26a1.svg" title=":zap:"> The unit tests now compile two times faster.</li> <li><img alt="➕" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/2795.svg" title=":heavy_plus_sign:"> <a href="https://github.com/sakra/cotire">Cotire</a> is used to speed up the build.</li> <li><img alt="✏" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/270f.svg" title=":pencil2:"> Fixed a lot of typos in the documentation.</li> <li><img alt="📝" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f4dd.svg" title=":memo:"> Added a section to the README file that lists all used <a href="https://github.com/nlohmann/json#used-third-party-tools">third-party code/tools</a>.</li> <li><img alt="📝" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f4dd.svg" title=":memo:"> Added a note on constructing a string value vs. parsing.</li> <li><img alt="✅" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/2705.svg" title=":white_check_mark:"> The test suite now contains 11202597 unit tests.</li> <li><img alt="📝" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f4dd.svg" title=":memo:"> Improved the <a href="https://nlohmann.github.io/json/">Doxygen documentation</a> by shortening the template parameters of class <code>basic_json</code>.</li> <li><img alt="👷" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f477.svg" title=":construction_worker:"> Removed Doozer.</li> <li><img alt="👷" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f477.svg" title=":construction_worker:"> Added Codacity.</li> <li><img alt="⬆" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/2b06.svg" title=":arrow_up:"> Upgraded Catch to version 1.7.2.</li> </ul> <h2 id=v210>v2.1.0<a class=headerlink href=#v210 title="Permanent link">¶</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v2.1.0/json.hpp">json.hpp</a> (426 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v2.1.0/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <ul> <li>Release date: 2017-01-28</li> <li><abbr title="Secure Hash Algorithm">SHA</abbr>-256: a571dee92515b685784fd527e38405cf3f5e13e96edbfe3f03d6df2e363a767b</li> </ul> <h3 id=summary_16>Summary<a class=headerlink href=#summary_16 title="Permanent link">¶</a></h3> <p>This release introduces a means to convert from/to user-defined types. The release is backwards compatible.</p> <p><img alt="conversion" src="../../assets/external/cloud.githubusercontent.com/assets/159488/22399173/aebe8f7a-e597-11e6-930f-7494ee615827.png"></p> <h3 id=changes_2>Changes<a class=headerlink href=#changes_2 title="Permanent link">¶</a></h3> <ul> <li><img alt="✨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/2728.svg" title=":sparkles:"> The library now offers an elegant way to <strong>convert from and to arbitrary value types</strong>. All you need to do is to implement two functions: <code>to_json</code> and <code>from_json</code>. Then, a conversion is as simple as putting a <code>=</code> between variables. See the <a href="https://github.com/nlohmann/json#arbitrary-types-conversions">README</a> for more information and examples.</li> <li><img alt="✨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/2728.svg" title=":sparkles:"> <strong>Exceptions can now be switched off.</strong> This can be done by defining the preprocessor symbol <code>JSON_NOEXCEPTION</code> or by passing <code>-fno-exceptions</code> to your compiler. In case the code would usually thrown an exception, <code>abort()</code> is now called.</li> <li><img alt="✨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/2728.svg" title=":sparkles:"> <strong>Information on the library</strong> can be queried with the new (static) function <code>meta()</code> which returns a <abbr title="JavaScript Object Notation">JSON</abbr> object with information on the version, compiler, and platform. See the <a href>documentation</a> for an example.</li> <li><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f41b.svg" title=":bug:"> A bug in the <abbr title="Concise Binary Object Representation">CBOR</abbr> parser was fixed which led to a buffer overflow.</li> <li><img alt="✨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/2728.svg" title=":sparkles:"> The function <a href><code>type_name()</code></a> is now public. It allows to query the type of a <abbr title="JavaScript Object Notation">JSON</abbr> value as string.</li> <li><img alt="✅" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/2705.svg" title=":white_check_mark:"> Added the <a href="https://github.com/minimaxir/big-list-of-naughty-strings">Big List of Naughty Strings</a> as test case.</li> <li><img alt="⬆" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/2b06.svg" title=":arrow_up:"> Updated to <a href="https://github.com/philsquared/Catch/releases/tag/v1.6.0">Catch v1.6.0</a>.</li> <li><img alt="📝" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f4dd.svg" title=":memo:"> Some typos in the documentation have been fixed.</li> </ul> <h2 id=v2010>v2.0.10<a class=headerlink href=#v2010 title="Permanent link">¶</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.10/json.hpp">json.hpp</a> (409 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.10/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <ul> <li>Release date: 2017-01-02</li> <li><abbr title="Secure Hash Algorithm">SHA</abbr>-256: ec27d4e74e9ce0f78066389a70724afd07f10761009322dc020656704ad5296d</li> </ul> <h3 id=summary_17>Summary<a class=headerlink href=#summary_17 title="Permanent link">¶</a></h3> <p>This release fixes several security-relevant bugs in the MessagePack and <abbr title="Concise Binary Object Representation">CBOR</abbr> parsers. The fixes are backwards compatible.</p> <h3 id=changes_3>Changes<a class=headerlink href=#changes_3 title="Permanent link">¶</a></h3> <ul> <li><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f41b.svg" title=":bug:"> Fixed a lot of <strong>bugs in the <abbr title="Concise Binary Object Representation">CBOR</abbr> and MesssagePack parsers</strong>. These bugs occurred if invalid input was parsed and then could lead in buffer overflows. These bugs were found with Google's <a href="https://github.com/google/oss-fuzz">OSS-Fuzz</a>, see #405, #407, #408, #409, #411, and #412 for more information.</li> <li><img alt="👷" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f477.svg" title=":construction_worker:"> We now also use the <strong><a href="https://doozer.io">Doozer</a> continuous integration platform</strong>.</li> <li><img alt="👷" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f477.svg" title=":construction_worker:"> The complete test suite is now also run with <strong>Clang's address sanitizer and undefined-behavior sanitizer</strong>.</li> <li><img alt="✅" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/2705.svg" title=":white_check_mark:"> Overworked <strong>fuzz testing</strong>; <abbr title="Concise Binary Object Representation">CBOR</abbr> and MessagePack implementations are now fuzz-tested. Furthermore, all fuzz tests now include a round trip which ensures created output can again be properly parsed and yields the same <abbr title="JavaScript Object Notation">JSON</abbr> value.</li> <li><img alt="📝" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f4dd.svg" title=":memo:"> Clarified documentation of <code>find()</code> function to always return <code>end()</code> when called on non-object value types.</li> <li><img alt="🔨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f528.svg" title=":hammer:"> Moved thirdparty test code to <code>test/thirdparty</code> directory.</li> </ul> <h2 id=v209>v2.0.9<a class=headerlink href=#v209 title="Permanent link">¶</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.9/json.hpp">json.hpp</a> (406 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.9/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <ul> <li>Release date: 2016-12-16</li> <li><abbr title="Secure Hash Algorithm">SHA</abbr>-256: fbf3396f13e187d6c214c297bddc742d918ea9b55e10bfb3d9f458b9bfdc22e5</li> </ul> <h3 id=summary_18>Summary<a class=headerlink href=#summary_18 title="Permanent link">¶</a></h3> <p>This release implements with <strong><a href="http://cbor.io"><abbr title="Concise Binary Object Representation">CBOR</abbr></a></strong> and <strong><a href="http://msgpack.org">MessagePack</a></strong> two <strong>binary serialization/deserialization formats</strong>. It further contains some small fixes and improvements. The fixes are backwards compatible.</p> <p><img alt="cbor" src="../../assets/external/cloud.githubusercontent.com/assets/159488/22399181/d4d60d32-e597-11e6-8dcb-825abcf9ac2a.png"></p> <h3 id=changes_4>Changes<a class=headerlink href=#changes_4 title="Permanent link">¶</a></h3> <ul> <li><img alt="✨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/2728.svg" title=":sparkles:"> The library can now read and write the binary formats <strong><a href="http://cbor.io"><abbr title="Concise Binary Object Representation">CBOR</abbr></a></strong> (Concise Binary Object Representation) and <strong><a href="http://msgpack.org">MessagePack</a></strong>. Both formats are aimed to produce a very compact representation of <abbr title="JavaScript Object Notation">JSON</abbr> which can be parsed very efficiently. See the <a href="https://github.com/nlohmann/json#binary-formats-cbor-and-messagepack">README file</a> for more information and examples.</li> <li><img alt="🔥" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f525.svg" title=":fire:"> simplified the iteration implementation allowing to remove dozens of lines of code</li> <li><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f41b.svg" title=":bug:"> fixed an <a href="https://github.com/nlohmann/json/issues/389">integer overflow error</a> detected by <a href="https://github.com/google/oss-fuzz">Google's OSS-Fuzz</a></li> <li><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f41b.svg" title=":bug:"> suppressed documentation warnings inside the library to facilitate compilation with <code>-Wdocumentation</code></li> <li><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f41b.svg" title=":bug:"> fixed an overflow detection error in the number parser</li> <li><img alt="📝" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f4dd.svg" title=":memo:"> updated <a href="https://github.com/nlohmann/json/blob/develop/.github/CONTRIBUTING.md">contribution guidelines</a> to a list of frequentely asked features that will most likely be never added to the library</li> <li><img alt="📝" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f4dd.svg" title=":memo:"> added a <strong>table of contents</strong> to the <a href="https://github.com/nlohmann/json/blob/develop/README.md">README file</a> to add some structure</li> <li><img alt="📝" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f4dd.svg" title=":memo:"> mentioned the many <a href="https://github.com/nlohmann/json/tree/develop/docs/mkdocs/docs/examples">examples</a> and the <a href="https://nlohmann.github.io/json/">documentation</a> in the <a href>README file</a></li> <li><img alt="🔨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f528.svg" title=":hammer:"> split <a href="https://github.com/nlohmann/json/tree/develop/tests/src">unit tests</a> into individual independent binaries to speed up compilation and testing</li> <li><img alt="✅" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/2705.svg" title=":white_check_mark:"> the test suite now contains <strong>11201886</strong> tests</li> </ul> <h2 id=v208>v2.0.8<a class=headerlink href=#v208 title="Permanent link">¶</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.8/json.hpp">json.hpp</a> (360 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.8/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <ul> <li>Release date: 2016-12-02</li> <li><abbr title="Secure Hash Algorithm">SHA</abbr>-256: b70db0ad34f8e0e61dc3f0cbab88099336c9674c193d8a3439d93d6aca2d7120</li> </ul> <h3 id=summary_19>Summary<a class=headerlink href=#summary_19 title="Permanent link">¶</a></h3> <p>This release combines a lot of small fixes and improvements. The fixes are backwards compatible.</p> <h3 id=changes_5>Changes<a class=headerlink href=#changes_5 title="Permanent link">¶</a></h3> <ul> <li><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f41b.svg" title=":bug:"> fixed a bug that froze the parser if a passed file was not found (now, <code>std::invalid_argument</code> is thrown)</li> <li><img alt="🐛" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f41b.svg" title=":bug:"> fixed a bug that lead to an error of a file at <abbr title="End of File">EOF</abbr> was parsed again (now, <code>std::invalid_argument</code> is thrown)</li> <li><img alt="✨" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/2728.svg" title=":sparkles:"> the well known functions <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a602f275f0359ab181221384989810604.html#a602f275f0359ab181221384989810604"><code>emplace</code></a> and <a href="http://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_af8a435033327d9237da414afc1cce513.html#af8a435033327d9237da414afc1cce513"><code>emplace_back</code></a> have been added to <abbr title="JavaScript Object Notation">JSON</abbr> values and work as expected</li> <li><img alt="⚡" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/26a1.svg" title=":zap:"> improved the performance of the serialization (<code>dump</code> function)</li> <li><img alt="⚡" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/26a1.svg" title=":zap:"> improved the performance of the deserialization (parser)</li> <li><img alt="👷" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f477.svg" title=":construction_worker:"> some continuous integration images at <a href="https://travis-ci.org/nlohmann/json">Travis</a> were added and retired; see <a href="https://github.com/nlohmann/json#supported-compilers">here</a> for the current continuous integration setup</li> <li><img alt="👷" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f477.svg" title=":construction_worker:"> the <a href="https://scan.coverity.com/projects/nlohmann-json">Coverity scan</a> works again</li> <li><img alt="📈" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f4c8.svg" title=":chart_with_upwards_trend:"> the benchmarking code has been improved to produce more stable results</li> <li><img alt="📝" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/1f4dd.svg" title=":memo:"> the <a href="https://github.com/nlohmann/json/blob/develop/README.md">README</a> file has been extended and includes more frequently asked examples</li> <li><img alt="✅" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/2705.svg" title=":white_check_mark:"> the test suite now contains 8905518 tests</li> <li><img alt="⬆" class="twemoji" src="../../assets/external/cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/svg/2b06.svg" title=":arrow_up:"> updated <a href="https://github.com/philsquared/Catch">Catch</a> to version 1.5.8</li> </ul> <h2 id=v207>v2.0.7<a class=headerlink href=#v207 title="Permanent link">¶</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.7/json.hpp">json.hpp</a> (355 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.7/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <ul> <li>Release date: 2016-11-02</li> <li><abbr title="Secure Hash Algorithm">SHA</abbr>-256: 5545c323670f8165bae90b9dc6078825e86ec310d96cc4e5b47233ea43715bbf</li> </ul> <h3 id=summary_20>Summary<a class=headerlink href=#summary_20 title="Permanent link">¶</a></h3> <p>This release fixes a few bugs in the <abbr title="JavaScript Object Notation">JSON</abbr> parser found in the <a href="https://seriot.ch/projects/parsing_json.html">Parsing <abbr title="JavaScript Object Notation">JSON</abbr> is a Minefield 💣</a> article. The fixes are backwards compatible.</p> <h3 id=changes_6>Changes<a class=headerlink href=#changes_6 title="Permanent link">¶</a></h3> <ul> <li>The article <a href="https://seriot.ch/projects/parsing_json.html">Parsing <abbr title="JavaScript Object Notation">JSON</abbr> is a Minefield 💣</a> discusses a lot of pitfalls of the <abbr title="JavaScript Object Notation">JSON</abbr> specification. When investigating the published test cases, a few bugs in the library were found and fixed:</li> <li>Files with less than 5 bytes can now be parsed without error.</li> <li>The library now properly rejects any file encoding other than <abbr title="Unicode Transformation Format">UTF</abbr>-8. Furthermore, incorrect surrogate pairs are properly detected and rejected.</li> <li>The library now accepts all but one "yes" test (y_string_utf16.json): <abbr title="Unicode Transformation Format">UTF</abbr>-16 is not supported.</li> <li>The library rejects all but one "no" test (n_number_then_00.json): Null bytes are treated as end of file instead of an error. This allows to parse input from null-terminated strings.</li> <li>The string length passed to a user-defined string literal is now exploited to choose a more efficient constructor.</li> <li>A few grammar mistakes in the README file have been fixed.</li> </ul> <h2 id=v206>v2.0.6<a class=headerlink href=#v206 title="Permanent link">¶</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.6/json.hpp">json.hpp</a> (349 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.6/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <ul> <li>Release date: 2016-10-15</li> <li>SHA256: 459cc93d5e2f503e50c6d5876eb86bfea7daf405f5a567c5a2c9abc2383756ae</li> </ul> <h3 id=summary_21>Summary<a class=headerlink href=#summary_21 title="Permanent link">¶</a></h3> <p>This release fixes the semantics of <code>operator[]</code> for <abbr title="JavaScript Object Notation">JSON</abbr> Pointers (see below). This fix is backwards compatible.</p> <h3 id=changes_7>Changes<a class=headerlink href=#changes_7 title="Permanent link">¶</a></h3> <ul> <li><strong><code>operator[]</code> for <abbr title="JavaScript Object Notation">JSON</abbr> Pointers</strong> now behaves like the other versions of <code>operator[]</code> and transforms <code>null</code> values into objects or arrays if required. This allows to created nested structures like <code>j["/foo/bar/2"] = 17</code> (yielding <code>{"foo": "bar": [null, null, 17]}</code>) without problems.</li> <li>overworked a helper <abbr title="Substitution failure is not an error">SFINAE</abbr> function</li> <li>fixed some documentation issues</li> <li>fixed the CMake files to allow to run the test suite outside the main project directory</li> <li>restored test coverage to 100%.</li> </ul> <h2 id=v205>v2.0.5<a class=headerlink href=#v205 title="Permanent link">¶</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.5/json.hpp">json.hpp</a> (347 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.5/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <ul> <li>Release date: 2016-09-14</li> <li><abbr title="Secure Hash Algorithm">SHA</abbr>-256: 8b7565263a44e2b7d3b89808bc73d2d639037ff0c1f379e3d56dbd77e00b98d9</li> </ul> <h3 id=summary_22>Summary<a class=headerlink href=#summary_22 title="Permanent link">¶</a></h3> <p>This release fixes a regression bug in the stream parser (function <code>parse()</code> and the <code><<</code>/<code>>></code> operators). This fix is backwards compatible.</p> <h3 id=changes_8>Changes<a class=headerlink href=#changes_8 title="Permanent link">¶</a></h3> <ul> <li><strong>Bug fix</strong>: The end of a file stream was not detected properly which led to parse errors. This bug should have been fixed with 2.0.4, but there was still a flaw in the code.</li> </ul> <h2 id=v204>v2.0.4<a class=headerlink href=#v204 title="Permanent link">¶</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.4/json.hpp">json.hpp</a> (347 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.4/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <ul> <li>Release date: 2016-09-11</li> <li><abbr title="Secure Hash Algorithm">SHA</abbr>-256: 632ceec4c25c4e2153f71470d3a2b992c8355f6d8b4d627d05dd16095cd3aeda</li> </ul> <h3 id=summary_23>Summary<a class=headerlink href=#summary_23 title="Permanent link">¶</a></h3> <p>This release fixes a bug in the stream parser (function <code>parse()</code> and the <code><<</code>/<code>>></code> operators). This fix is backwards compatible.</p> <h3 id=changes_9>Changes<a class=headerlink href=#changes_9 title="Permanent link">¶</a></h3> <ul> <li><strong>Bug fix</strong>: The end of a file stream was not detected properly which led to parse errors.</li> <li>Fixed a compiler warning about an unused variable.</li> </ul> <h2 id=v203>v2.0.3<a class=headerlink href=#v203 title="Permanent link">¶</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.3/json.hpp">json.hpp</a> (347 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.3/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <ul> <li>Release date: 2016-08-31</li> <li><abbr title="Secure Hash Algorithm">SHA</abbr>-256: 535b73efe5546fde9e763c14aeadfc7b58183c0b3cd43c29741025aba6cf6bd3</li> </ul> <h3 id=summary_24>Summary<a class=headerlink href=#summary_24 title="Permanent link">¶</a></h3> <p>This release combines a lot of small fixes and improvements. The release is backwards compatible.</p> <h3 id=changes_10>Changes<a class=headerlink href=#changes_10 title="Permanent link">¶</a></h3> <ul> <li>The <strong>parser/deserialization functions have been generalized</strong> to process any contiguous sequence of 1-byte elements (e.g., <code>char</code>, <code>unsigned char</code>, <code>uint8_t</code>). This includes all kind of string representations (string literals, char arrays, <code>std::string</code>, <code>const char*</code>), contiguous containers (C-style arrays, <code>std::vector</code>, <code>std::array</code>, <code>std::valarray</code>, <code>std::initializer_list</code>). User-defined containers providing random-access iterator access via <code>std::begin</code> and <code>std::end</code> can be used as well. See the documentation (<a href="https://nlohmann.github.io/json/classnlohmann_1_1basic__json_ace63ac4eb1dd7251a259d32e397461a3.html#ace63ac4eb1dd7251a259d32e397461a3">1</a>, <a href="https://nlohmann.github.io/json/classnlohmann_1_1basic__json_a90f05d55d9d0702c075cd281fd0d85ae.html#a90f05d55d9d0702c075cd281fd0d85ae">2</a>, <a href="https://nlohmann.github.io/json/classnlohmann_1_1basic__json_aeffd70f622f8f2a51fd3d95af64b63a7.html#aeffd70f622f8f2a51fd3d95af64b63a7">3</a>, <a href="https://nlohmann.github.io/json/classnlohmann_1_1basic__json_aa8dca2e91a6301c36890f844e64f0023.html#aa8dca2e91a6301c36890f844e64f0023">4</a>) for more information. Note that contiguous storage cannot be checked at compile time; if any of the parse functions are called with a noncompliant container, the behavior is undefined and will most likely yield segmentation violation. The preconditions are enforced by an assertion unless the library is compiled with preprocessor symbol <code>NDEBUG</code>.</li> <li>As a general remark on <strong>assertions</strong>: The library uses assertions to preclude undefined behavior. A <a href="https://github.com/nlohmann/json/issues/289">prominent example</a> for this is the <code>operator[]</code> for const <abbr title="JavaScript Object Notation">JSON</abbr> objects. The behavior of this const version of the operator is undefined if the given key does not exist in the <abbr title="JavaScript Object Notation">JSON</abbr> object, because unlike the non-const version, it cannot add a <code>null</code> value at the given key. Assertions can be switched of by defining the preprocessor symbol <code>NDEBUG</code>. See the <a href="http://en.cppreference.com/w/cpp/error/assert">documentation of <code>assert</code></a> for more information.</li> <li>In the course of cleaning up the parser/deserialization functions, the constructor <a href="https://nlohmann.github.io/json/classnlohmann_1_1basic__json_a32350263eb105764844c5a85e156a255.html#a32350263eb105764844c5a85e156a255"><code>basic_json(std::istream&, const parser_callback_t)</code></a> has been <strong>deprecated</strong> and will be deleted with the next major release 3.0.0 to unify the interface of the library. Deserialization will be done by stream operators or by calling one of the <code>parse</code> functions. That is, calls like <code>json j(i);</code> for an input stream <code>i</code> need to be replaced by <code>json j = json::parse(i);</code>. Compilers will produce a deprecation warning if client code uses this function.</li> <li>Minor improvements:</li> <li>Improved the performance of the serialization by avoiding the re-creation of a locale object.</li> <li>Fixed two <abbr title="Microsoft Visual C++">MSVC</abbr> warnings. Compiling the test suite with <code>/Wall</code> now only warns about non-inlined functions (C4710) and the deprecation of the constructor from input-stream (C4996).</li> <li>Some project internals:</li> <li><img align="right" src="../../assets/external/bestpractices.coreinfrastructure.org/assets/questions_page_badge-17b338c0e8528d695d8676e23f39f17ca2b89bb88176370803ee69aeebcb5be4.png"> The project has qualified for the <a href="https://bestpractices.coreinfrastructure.org/projects/289">Core Infrastructure Initiative Best Practices Badge</a>. While most requirements where already satisfied, some led to more explicit documentation of quality-ensuring procedures. For instance, static analysis is now executed with every commit on the build server. Furthermore, the <a href="https://github.com/nlohmann/json/blob/develop/.github/CONTRIBUTING.md">contribution guidelines document</a> how to communicate security issues privately.</li> <li>The test suite has been overworked and split into several files to allow for faster compilation and analysis. The execute the test suite, simply execute <code>make check</code>.</li> <li>The continuous integration with <a href="https://travis-ci.org/nlohmann/json">Travis</a> was extended with Clang versions 3.6.0 to 3.8.1 and now includes 18 different compiler/OS combinations.</li> <li>An 11-day run of <a href="http://lcamtuf.coredump.cx/afl/">American fuzzy lop</a> checked 962 million inputs on the parser and found no issue.</li> </ul> <h2 id=v202>v2.0.2<a class=headerlink href=#v202 title="Permanent link">¶</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.2/json.hpp">json.hpp</a> (338 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.2/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <ul> <li>Release date: 2016-07-31</li> <li><abbr title="Secure Hash Algorithm">SHA</abbr>-256: 8e97b7965b4594b00998d6704465412360e1a0ed927badb51ded8b82291a8f3d</li> </ul> <h3 id=summary_25>Summary<a class=headerlink href=#summary_25 title="Permanent link">¶</a></h3> <p>This release combines a lot of small fixes and improvements. The release is backwards compatible.</p> <h3 id=changes_11>Changes<a class=headerlink href=#changes_11 title="Permanent link">¶</a></h3> <ul> <li>The <strong>parser</strong> has been overworked, and a lot of small issues have been fixed:</li> <li>Improved parser performance by avoiding recursion and using move semantics for the return value.</li> <li>Unescaped control characters <code>\x10</code>-<code>\x1f</code> are not accepted any more.</li> <li>Fixed a bug in the parser when reading from an input stream.</li> <li>Improved test case coverage for <abbr title="Unicode Transformation Format">UTF</abbr>-8 parsing: now, all valid Unicode code points are tested both escaped and unescaped.</li> <li>The precision of output streams is now preserved by the parser.</li> <li>Started to check the <strong>code correctness</strong> by proving termination of important loops. Furthermore, individual assertions have been replaced by a more systematic function which checks the class invariants. Note that assertions should be switched off in production by defining the preprocessor macro <code>NDEBUG</code>, see the <a href="http://en.cppreference.com/w/cpp/error/assert">documentation of <code>assert</code></a>.</li> <li>A lot of <strong>code cleanup</strong>: removed unused headers, fixed some compiler warnings, and fixed a build error for Windows-based Clang builds.</li> <li>Added some compile-time checks:</li> <li>Unsupported compilers are rejected during compilation with an <code>#error</code> command.</li> <li>Static assertion prohibits code with incompatible pointer types used in <code>get_ptr()</code>.</li> <li>Improved the <a href="https://nlohmann.github.io/json/">documentation</a>, and adjusted the documentation script to choose the correct version of <code>sed</code>.</li> <li>Replaced a lot of "raw loops" by <abbr title="Standard Template Library">STL</abbr> functions like <code>std::all_of</code>, <code>std::for_each</code>, or <code>std::accumulate</code>. This facilitates reasoning about termination of loops and sometimes allowed to simplify functions to a single return statement.</li> <li>Implemented a <code>value()</code> function for <abbr title="JavaScript Object Notation">JSON</abbr> pointers (similar to <code>at</code> function).</li> <li>The Homebrew formula (see <a href="https://github.com/nlohmann/json#integration">Integration</a>) is now tested for all Xcode builds (6.1 - 8.x) with Travis.</li> <li>Avoided output to <code>std::cout</code> in the test cases.</li> </ul> <h2 id=v201>v2.0.1<a class=headerlink href=#v201 title="Permanent link">¶</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.1/json.hpp">json.hpp</a> (321 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.1/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <ul> <li>Release date: 2016-06-28</li> <li><abbr title="Secure Hash Algorithm">SHA</abbr>-256: ef550fcd7df572555bf068e9ec4e9d3b9e4cdd441cecb0dcea9ea7fd313f72dd</li> </ul> <h3 id=summary_26>Summary<a class=headerlink href=#summary_26 title="Permanent link">¶</a></h3> <p>This release fixes a performance regression in the <abbr title="JavaScript Object Notation">JSON</abbr> serialization (function <code>dump()</code>). This fix is backwards compatible.</p> <h3 id=changes_12>Changes<a class=headerlink href=#changes_12 title="Permanent link">¶</a></h3> <ul> <li>The locale of the output stream (or the internal string stream if a <abbr title="JavaScript Object Notation">JSON</abbr> value is serialized to a string) is now adjusted once for the whole serialization instead of for each floating-point number.</li> <li>The locale of an output stream is now correctly reset to the previous value by the <abbr title="JavaScript Object Notation">JSON</abbr> library.</li> </ul> <h2 id=v200>v2.0.0<a class=headerlink href=#v200 title="Permanent link">¶</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.0/json.hpp">json.hpp</a> (321 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v2.0.0/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <ul> <li>Release date: 2016-06-24</li> <li><abbr title="Secure Hash Algorithm">SHA</abbr>-256: ac9e1fb25c2ac9ca5fc501fcd2fe3281fe04f07018a1b48820e7b1b11491bb6c</li> </ul> <h3 id=summary_27>Summary<a class=headerlink href=#summary_27 title="Permanent link">¶</a></h3> <p>This release adds several features such as <abbr title="JavaScript Object Notation">JSON</abbr> Pointers, <abbr title="JavaScript Object Notation">JSON</abbr> Patch, or support for 64 bit unsigned integers. Furthermore, several (subtle) bugs have been fixed.</p> <p>As <code>noexcept</code> and <code>constexpr</code> specifier have been added to several functions, the public <abbr title="Application Programming Interfaces">API</abbr> has effectively been changed in a (potential) non-backwards compatible manner. As we adhere to <a href="http://semver.org">Semantic Versioning</a>, this calls for a new major version, so say hello to 2️⃣.0️⃣.0️⃣.</p> <h3 id=changes_13>Changes<a class=headerlink href=#changes_13 title="Permanent link">¶</a></h3> <ul> <li>🔟 A <abbr title="JavaScript Object Notation">JSON</abbr> value now uses <code>uint64_t</code> (default value for template parameter <code>NumberUnsignedType</code>) as data type for <strong>unsigned integer</strong> values. This type is used automatically when an unsigned number is parsed. Furthermore, constructors, conversion operators and an <code>is_number_unsigned()</code> test have been added.</li> <li>👉 <strong><abbr title="JavaScript Object Notation">JSON</abbr> Pointer</strong> (<a href="https://tools.ietf.org/html/rfc6901"><abbr title="Request for Comments">RFC</abbr> 6901</a>) support: A <abbr title="JavaScript Object Notation">JSON</abbr> Pointer is a string (similar to an XPath expression) to address a value inside a structured <abbr title="JavaScript Object Notation">JSON</abbr> value. <abbr title="JavaScript Object Notation">JSON</abbr> Pointers can be used in <code>at()</code> and <code>operator[]</code> functions. Furthermore, <abbr title="JavaScript Object Notation">JSON</abbr> values can be “flattened” to key/value pairs using <code>flatten()</code> where each key is a <abbr title="JavaScript Object Notation">JSON</abbr> Pointer. The original value can be restored by “unflattening” the flattened value using <code>unflatten()</code>.</li> <li>🏥 <strong><abbr title="JavaScript Object Notation">JSON</abbr> Patch</strong> (<a href="https://tools.ietf.org/html/rfc6902"><abbr title="Request for Comments">RFC</abbr> 6902</a>) support. A <abbr title="JavaScript Object Notation">JSON</abbr> Patch is a <abbr title="JavaScript Object Notation">JSON</abbr> value that describes the required edit operations (add, change, remove, …) to transform a <abbr title="JavaScript Object Notation">JSON</abbr> value into another one. A <abbr title="JavaScript Object Notation">JSON</abbr> Patch can be created with function <code>diff(const basic_json&)</code> and applied with <code>patch(const basic_json&)</code>. Note the created patches use a rather primitive algorithm so far and leave room for improvement.</li> <li>🇪🇺 The code is now <strong>locale-independent</strong>: Floating-point numbers are always serialized with a period (<code>.</code>) as decimal separator and ignores different settings from the locale.</li> <li>🍺 <strong>Homebrew</strong> support: Install the library with <code>brew tap nlohmann/json && brew install nlohmann_json</code>.</li> <li>Added constructor to create a <abbr title="JavaScript Object Notation">JSON</abbr> value by parsing a <code>std::istream</code> (e.g., <code>std::stringstream</code> or <code>std::ifstream</code>).</li> <li>Added <strong><code>noexcept</code></strong> specifier to <code>basic_json(boolean_t)</code>, <code>basic_json(const number_integer_t)</code>, <code>basic_json(const int)</code>, <code>basic_json(const number_float_t)</code>, iterator functions (<code>begin()</code>, <code>end()</code>, etc.)</li> <li>When parsing numbers, the sign of <code>0.0</code> (vs. <code>-0.0</code>) is preserved.</li> <li>Improved <abbr title="Microsoft Visual C++">MSVC</abbr> 2015, Android, and MinGW support. See <a href="https://github.com/nlohmann/json#supported-compilers">README</a> for more information.</li> <li>Improved test coverage (added 2,225,386 tests).</li> <li>Removed some misuses of <code>std::move</code>.</li> <li>Fixed several compiler warnings.</li> <li>Improved error messages from <abbr title="JavaScript Object Notation">JSON</abbr> parser.</li> <li>Updated to <a href="http://re2c.org"><code>re2c</code></a> to version 0.16 to use a minimal DFAs for the lexer.</li> <li>Updated test suite to use <a href="https://github.com/philsquared/Catch">Catch</a> version 1.5.6.</li> <li>Made type getters (<code>is_number</code>, etc.) and const value access <code>constexpr</code>.</li> <li>Functions <code>push_back</code> and <code>operator+=</code> now work with key/value pairs passed as initializer list, e.g. <code>j_object += {"key", 1}</code>.</li> <li>Overworked <code>CMakeLists.txt</code> to make it easier to integrate the library into other projects.</li> </ul> <h3 id=notes>Notes<a class=headerlink href=#notes title="Permanent link">¶</a></h3> <ul> <li>Parser error messages are still very vague and contain no information on the error location.</li> <li>The implemented <code>diff</code> function is rather primitive and does not create minimal diffs.</li> <li>The name of function <code>iteration_wrapper</code> may change in the future and the function will be deprecated in the next release.</li> <li>Roundtripping (i.e., parsing a <abbr title="JavaScript Object Notation">JSON</abbr> value from a string, serializing it, and comparing the strings) of floating-point numbers is not 100% accurate. Note that <a href="https://tools.ietf.org/html/rfc8259"><abbr title="Request for Comments">RFC</abbr> 8259</a> defines no format to internally represent numbers and states not requirement for roundtripping. Nevertheless, benchmarks like <a href="https://github.com/miloyip/nativejson-benchmark">Native <abbr title="JavaScript Object Notation">JSON</abbr> Benchmark</a> treat roundtripping deviations as conformance errors.</li> </ul> <h2 id=v110>v1.1.0<a class=headerlink href=#v110 title="Permanent link">¶</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v1.1.0/json.hpp">json.hpp</a> (257 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v1.1.0/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <ul> <li>Release date: 2016-01-24</li> <li><abbr title="Secure Hash Algorithm">SHA</abbr>-256: c0cf0e3017798ca6bb18e757ebc570d21a3bdac877845e2b9e9573d183ed2f05</li> </ul> <h3 id=summary_28>Summary<a class=headerlink href=#summary_28 title="Permanent link">¶</a></h3> <p>This release fixes several small bugs and adds functionality in a backwards-compatible manner. Compared to the <a href="https://github.com/nlohmann/json/releases/tag/v1.0.0">last version (1.0.0)</a>, the following changes have been made:</p> <h3 id=changes_14>Changes<a class=headerlink href=#changes_14 title="Permanent link">¶</a></h3> <ul> <li><em>Fixed</em>: <strong>Floating-point numbers</strong> are now serialized and deserialized properly such that rountripping works in more cases. [#185, #186, #190, #191, #194]</li> <li><em>Added</em>: The code now contains <strong>assertions</strong> to detect undefined behavior during development. As the standard function <code>assert</code> is used, the assertions can be switched off by defining the preprocessor symbol <code>NDEBUG</code> during compilation. [#168]</li> <li><em>Added</em>: It is now possible to get a <strong>reference</strong> to the stored values via the newly added function <code>get_ref()</code>. [#128, #184]</li> <li><em>Fixed</em>: Access to object values via keys (<strong><code>operator[]</code></strong>) now works with all kind of string representations. [#171, #189]</li> <li><em>Fixed</em>: The code now compiles again with <strong>Microsoft Visual Studio 2015</strong>. [#144, #167, #188]</li> <li><em>Fixed</em>: All required headers are now included.</li> <li><em>Fixed</em>: Typos and other small issues. [#162, #166, #175, #177, #179, #180]</li> </ul> <h3 id=notes_1>Notes<a class=headerlink href=#notes_1 title="Permanent link">¶</a></h3> <p>There are still known open issues (#178, #187) which will be fixed in version 2.0.0. However, these fixes will require a small <abbr title="Application Programming Interfaces">API</abbr> change and will not be entirely backwards-compatible.</p> <h2 id=v100>v1.0.0<a class=headerlink href=#v100 title="Permanent link">¶</a></h2> <div class="admonition summary"> <p class=admonition-title>Files</p> <ul> <li><a href="https://github.com/nlohmann/json/releases/download/v1.0.0/json.hpp">json.hpp</a> (243 KB)</li> <li><a href="https://github.com/nlohmann/json/releases/download/v1.0.0/json.hpp.asc">json.hpp.asc</a> (1 KB)</li> </ul> </div> <ul> <li>Release date: 2015-12-28</li> <li><abbr title="Secure Hash Algorithm">SHA</abbr>-256: 767dc2fab1819d7b9e19b6e456d61e38d21ef7182606ecf01516e3f5230446de</li> </ul> <h3 id=summary_29>Summary<a class=headerlink href=#summary_29 title="Permanent link">¶</a></h3> <p>This is the first official release. Compared to the <a href="https://github.com/nlohmann/json/releases/tag/v1.0.0-rc1">prerelease version 1.0.0-rc1</a>, only a few minor improvements have been made:</p> <h3 id=changes_15>Changes<a class=headerlink href=#changes_15 title="Permanent link">¶</a></h3> <ul> <li><em>Changed</em>: A <strong><abbr title="Unicode Transformation Format">UTF</abbr>-8 byte order mark</strong> is silently ignored.</li> <li><em>Changed</em>: <code>sprintf</code> is no longer used.</li> <li><em>Changed</em>: <code>iterator_wrapper</code> also works for const objects; note: the name may change!</li> <li><em>Changed</em>: <strong>Error messages</strong> during deserialization have been improved.</li> <li><em>Added</em>: The <code>parse</code> function now also works with type <code>std::istream&&</code>.</li> <li><em>Added</em>: Function <code>value(key, default_value)</code> returns either a copy of an object's element at the specified key or a given default value if no element with the key exists.</li> <li><em>Added</em>: Public functions are tagged with the version they were introduced. This shall allow for better <strong>versioning</strong> in the future.</li> <li><em>Added</em>: All public functions and types are <strong>documented</strong> (see <a href="http://nlohmann.github.io/json/doxygen/">http://nlohmann.github.io/json/doxygen/</a>) including executable examples.</li> <li><em>Added</em>: Allocation of all types (in particular arrays, strings, and objects) is now exception-safe.</li> <li><em>Added</em>: They descriptions of thrown exceptions have been overworked and are part of the tests suite and documentation.</li> </ul> <!-- https://squidfunk.github.io/mkdocs-material/reference/tooltips/#adding-a-glossary --> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="August 20, 2025 20:46:44 UTC">August 20, 2025</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright © 2013-2025 Niels Lohmann </div> </div> <div class=md-social> <a href="https://github.com/nlohmann" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path fill=currentColor d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/in/nielslohmann/" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path fill=currentColor d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://www.xing.com/profile/Niels_Lohmann" target="_blank" rel="noopener" title="www.xing.com" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path fill=currentColor d="M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3q.3 0 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1"/></svg> </a> <a href="https://www.paypal.me/nlohmann" target="_blank" rel="noopener" title="www.paypal.me" class="md-social__link"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 384 512"><!-- Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path fill=currentColor d="M111.9 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.8c-7.6 0-13.1-6.6-12.1-13.9L59.3 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2M357.6 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"base": "../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "navigation.top", "content.tabs.link", "content.action.edit", "content.action.view"], "search": "../../assets/javascripts/workers/search.973d3a69.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../../assets/javascripts/bundle.92b07e13.min.js></script> <script src="../../assets/external/cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.39674748.js"></script> </body> </html> |