/* @licstart The following is the entire license notice for the JavaScript code in this file. The MIT License (MIT) Copyright (C) 1997-2020 by Dimitri van Heesch Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @licend The above is the entire license notice for the JavaScript code in this file */ var NAVTREE = [ [ "Boost.Hana", "index.html", [ [ "User Manual", "index.html", [ [ "Description", "index.html#tutorial-description", null ], [ "Prerequisites and installation", "index.html#tutorial-installation", [ [ "Note for CMake users", "index.html#tutorial-installation-cmake", null ], [ "Compiler requirements", "index.html#tutorial-installation-requirements", null ] ] ], [ "Support", "index.html#tutorial-support", null ], [ "Introduction", "index.html#tutorial-introduction", [ [ "C++ computational quadrants", "index.html#tutorial-introduction-quadrants", null ], [ "What is this library about?", "index.html#tutorial-quadrants-about", null ] ] ], [ "Quick start", "index.html#tutorial-quickstart", [ [ "A real world example", "index.html#tutorial-quickstart-any", null ] ] ], [ "Cheatsheet", "index.html#tutorial-cheatsheet", null ], [ "Assertions", "index.html#tutorial-assert", null ], [ "Compile-time numbers", "index.html#tutorial-integral", [ [ "Compile-time arithmetic", "index.html#tutorial-integral-arithmetic", null ], [ "Example: Euclidean distance", "index.html#tutorial-integral-distance", null ], [ "Compile-time branching", "index.html#tutorial-integral-branching", null ], [ "Why stop here?", "index.html#tutorial-integral-more", null ] ] ], [ "Type computations", "index.html#tutorial-type", [ [ "Types as objects", "index.html#tutorial-type-objects", null ], [ "Benefits of this representation", "index.html#tutorial-type-benefits", null ], [ "Working with this representation", "index.html#tutorial-type-working", null ], [ "The generic lifting process", "index.html#tutorial-type-lifting", null ] ] ], [ "Introspection", "index.html#tutorial-introspection", [ [ "Checking expression validity", "index.html#tutorial-introspection-is_valid", [ [ "Remarks", "index.html#autotoc_md428", null ], [ "Non-static members", "index.html#tutorial-introspection-is_valid-non_static", null ], [ "Static members", "index.html#tutorial-introspection-is_valid-static", null ], [ "Nested type names", "index.html#tutorial-introspection-is_valid-nested-typename", null ], [ "Nested templates", "index.html#tutorial-introspection-is_valid-nested-template", null ], [ "Template specializations", "index.html#tutorial-introspection-is_valid-template", null ] ] ], [ "Taking control of SFINAE", "index.html#tutorial-introspection-sfinae", null ], [ "Introspecting user-defined types", "index.html#tutorial-introspection-adapting", null ], [ "Example: generating JSON", "index.html#tutorial-introspection-json", null ] ] ], [ "Generalities on containers", "index.html#tutorial-containers", [ [ "Container creation", "index.html#tutorial-containers-creating", null ], [ "Container types", "index.html#tutorial-containers-types", [ [ "Overloading on container types", "index.html#tutorial-containers-types-overloading", null ] ] ], [ "Container elements", "index.html#tutorial-containers-elements", null ] ] ], [ "Generalities on algorithms", "index.html#tutorial-algorithms", [ [ "By-value semantics", "index.html#tutorial-algorithms-value", null ], [ "(Non-)Laziness", "index.html#tutorial-algorithms-laziness", null ], [ "What is generated?", "index.html#tutorial-algorithms-codegen", null ], [ "Side effects and purity", "index.html#tutorial-algorithms-effects", null ], [ "Cross-phase algorithms", "index.html#tutorial-algorithms-cross_phase", null ] ] ], [ "Performance considerations", "index.html#tutorial-performance", [ [ "Compile-time performance", "index.html#tutorial-performance-compile", null ], [ "Runtime performance", "index.html#tutorial-performance-runtime", null ] ] ], [ "Integration with external libraries", "index.html#tutorial-ext", null ], [ "Hana's core", "index.html#tutorial-core", [ [ "Tags", "index.html#tutorial-core-tags", null ], [ "Tag dispatching", "index.html#tutorial-core-tag_dispatching", null ], [ "Emulation of C++ concepts", "index.html#tutorial-core-concepts", null ] ] ], [ "Header organization", "index.html#tutorial-header_organization", null ], [ "Conclusion", "index.html#tutorial-conclusion", [ [ "Fair warning: functional programming ahead", "index.html#tutorial-conclusion-warning", null ], [ "Related material", "index.html#tutorial-conclusion-related_material", null ], [ "Projects using Hana", "index.html#tutorial-conclusion-projects_using_hana", null ] ] ], [ "Using the reference", "index.html#tutorial-reference", [ [ "Function signatures", "index.html#tutorial-reference-signatures", null ] ] ], [ "Acknowledgements", "index.html#tutorial-acknowledgements", null ], [ "Glossary", "index.html#tutorial-glossary", null ], [ "Rationales/FAQ", "index.html#tutorial-rationales", [ [ "Why restrict usage of external dependencies?", "index.html#tutorial-rationales-dependencies", null ], [ "Why no iterators?", "index.html#tutorial-rationales-iterators", null ], [ "Why leave some container's representation implementation-defined?", "index.html#tutorial-rationales-container_representation", null ], [ "Why Hana?", "index.html#tutorial-rationales-why_Hana", null ], [ "Why define our own tuple?", "index.html#tutorial-rationales-tuple", null ], [ "How are names chosen?", "index.html#tutorial-rationales-naming", null ], [ "How is the parameter order decided?", "index.html#tutorial-rationales-parameters", null ], [ "Why tag dispatching?", "index.html#tutorial-rationales-tag_dispatching", null ], [ "Why not provide zip_longest?", "index.html#tutorial-rationales-zip_longest", null ], [ "Why aren't concepts constexpr functions?", "index.html#tutorial-rationales-concepts", null ] ] ], [ "Appendix I: Advanced constexpr", "index.html#tutorial-appendix-constexpr", [ [ "Constexpr stripping", "index.html#tutorial-appendix-constexpr-stripping", null ], [ "Constexpr preservation", "index.html#tutorial-tutorial-appendix-constexpr-preservation", null ], [ "Side effects", "index.html#tutorial-appendix-constexpr-effects", null ] ] ] ] ], [ "Reference documentation", "modules.html", "modules" ], [ "Alphabetical index", "functions.html", null ], [ "Headers", "files.html", "files" ], [ "Todo List", "todo.html", null ], [ "Bug List", "bug.html", null ], [ "Deprecated List", "deprecated.html", null ] ] ] ]; var NAVTREEINDEX = [ "accessors_8hpp.html", "fwd_2cycle_8hpp.html", "group__group-_iterable.html#ga5332fd1dd82edf08379958ba21d57a87", "index.html#tutorial-integral-distance", "structboost_1_1hana_1_1pair.html#a962bff38110b5c39b1267fc88851198d" ]; var SYNCONMSG = 'click to disable panel synchronisation'; var SYNCOFFMSG = 'click to enable panel synchronisation';