<?xml version="1.0" encoding="utf-8" ?>
<!--
    Copyright (C) 2011  Povilas Kanapickas <povilas@radix.lt>

    This file is part of cppreference-doc

    This work is licensed under the Creative Commons Attribution-ShareAlike 3.0
    Unported License. To view a copy of this license, visit
    http://creativecommons.org/licenses/by-sa/3.0/ or send a letter to Creative
    Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.

    Permission is granted to copy, distribute and/or modify this document
    under the terms of the GNU Free Documentation License, Version 1.3 or
    any later version published by the Free Software Foundation; with no
    Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
-->

<!--
    For the documentation of the schema, see the accompanying
    index-function.README file
-->
<index>

    <!--=======================================================================-->
    <!-- cpp/types -->

        <!-- generic types -->

    <typedef name="std::size_t" link="cpp/types/size_t"/>
    <typedef name="std::ptrdiff_t" link="cpp/types/ptrdiff_t"/>
    <typedef name="std::nullptr_t" link="cpp/types/nullptr_t"/>
    <const name="NULL" link="cpp/types/NULL"/>
    <typedef name="std::max_align_t" link="cpp/types/max_align_t"/>
    <function name="offsetof" link="cpp/types/offsetof"/>

        <!-- fixed width integer types -->

    <typedef name="std::int8_t" link="cpp/types/integer"/>
    <typedef name="std::int16_t" link="cpp/types/integer"/>
    <typedef name="std::int32_t" link="cpp/types/integer"/>
    <typedef name="std::int64_t" link="cpp/types/integer"/>
    <typedef name="std::int_fast8_t" link="cpp/types/integer"/>
    <typedef name="std::int_fast16_t" link="cpp/types/integer"/>
    <typedef name="std::int_fast32_t" link="cpp/types/integer"/>
    <typedef name="std::int_fast64_t" link="cpp/types/integer"/>
    <typedef name="std::int_least8_t" link="cpp/types/integer"/>
    <typedef name="std::int_least16_t" link="cpp/types/integer"/>
    <typedef name="std::int_least32_t" link="cpp/types/integer"/>
    <typedef name="std::int_least64_t" link="cpp/types/integer"/>
    <typedef name="std::intmax_t" link="cpp/types/integer"/>
    <typedef name="std::intptr_t" link="cpp/types/integer"/>

    <typedef name="std::uint8_t" link="cpp/types/integer"/>
    <typedef name="std::uint16_t" link="cpp/types/integer"/>
    <typedef name="std::uint32_t" link="cpp/types/integer"/>
    <typedef name="std::uint64_t" link="cpp/types/integer"/>
    <typedef name="std::uint_fast8_t" link="cpp/types/integer"/>
    <typedef name="std::uint_fast16_t" link="cpp/types/integer"/>
    <typedef name="std::uint_fast32_t" link="cpp/types/integer"/>
    <typedef name="std::uint_fast64_t" link="cpp/types/integer"/>
    <typedef name="std::uint_least8_t" link="cpp/types/integer"/>
    <typedef name="std::uint_least16_t" link="cpp/types/integer"/>
    <typedef name="std::uint_least32_t" link="cpp/types/integer"/>
    <typedef name="std::uint_least64_t" link="cpp/types/integer"/>
    <typedef name="std::uintmax_t" link="cpp/types/integer"/>
    <typedef name="std::uintptr_t" link="cpp/types/integer"/>

    <const name="INT8_MIN" link="cpp/types/integer"/>
    <const name="INT16_MIN" link="cpp/types/integer"/>
    <const name="INT32_MIN" link="cpp/types/integer"/>
    <const name="INT64_MIN" link="cpp/types/integer"/>
    <const name="INT_FAST8_MIN" link="cpp/types/integer"/>
    <const name="INT_FAST16_MIN" link="cpp/types/integer"/>
    <const name="INT_FAST32_MIN" link="cpp/types/integer"/>
    <const name="INT_FAST64_MIN" link="cpp/types/integer"/>
    <const name="INT_LEAST8_MIN" link="cpp/types/integer"/>
    <const name="INT_LEAST16_MIN" link="cpp/types/integer"/>
    <const name="INT_LEAST32_MIN" link="cpp/types/integer"/>
    <const name="INT_LEAST64_MIN" link="cpp/types/integer"/>
    <const name="INTPTR_MIN" link="cpp/types/integer"/>
    <const name="INTMAX_MIN" link="cpp/types/integer"/>

    <const name="INT8_MAX" link="cpp/types/integer"/>
    <const name="INT16_MAX" link="cpp/types/integer"/>
    <const name="INT32_MAX" link="cpp/types/integer"/>
    <const name="INT64_MAX" link="cpp/types/integer"/>
    <const name="INT_FAST8_MAX" link="cpp/types/integer"/>
    <const name="INT_FAST16_MAX" link="cpp/types/integer"/>
    <const name="INT_FAST32_MAX" link="cpp/types/integer"/>
    <const name="INT_FAST64_MAX" link="cpp/types/integer"/>
    <const name="INT_LEAST8_MAX" link="cpp/types/integer"/>
    <const name="INT_LEAST16_MAX" link="cpp/types/integer"/>
    <const name="INT_LEAST32_MAX" link="cpp/types/integer"/>
    <const name="INT_LEAST64_MAX" link="cpp/types/integer"/>
    <const name="INTPTR_MAX" link="cpp/types/integer"/>
    <const name="INTMAX_MAX" link="cpp/types/integer"/>

    <const name="UINT8_MAX" link="cpp/types/integer"/>
    <const name="UINT16_MAX" link="cpp/types/integer"/>
    <const name="UINT32_MAX" link="cpp/types/integer"/>
    <const name="UINT64_MAX" link="cpp/types/integer"/>
    <const name="UINT_FAST8_MAX" link="cpp/types/integer"/>
    <const name="UINT_FAST16_MAX" link="cpp/types/integer"/>
    <const name="UINT_FAST32_MAX" link="cpp/types/integer"/>
    <const name="UINT_FAST64_MAX" link="cpp/types/integer"/>
    <const name="UINT_LEAST8_MAX" link="cpp/types/integer"/>
    <const name="UINT_LEAST16_MAX" link="cpp/types/integer"/>
    <const name="UINT_LEAST32_MAX" link="cpp/types/integer"/>
    <const name="UINT_LEAST64_MAX" link="cpp/types/integer"/>
    <const name="UINTPTR_MAX" link="cpp/types/integer"/>
    <const name="UINTMAX_MAX" link="cpp/types/integer"/>

    <const name="PRId8" link="cpp/types/integer"/>
    <const name="PRId16" link="cpp/types/integer"/>
    <const name="PRId32" link="cpp/types/integer"/>
    <const name="PRId64" link="cpp/types/integer"/>
    <const name="PRIdLEAST8" link="cpp/types/integer"/>
    <const name="PRIdLEAST16" link="cpp/types/integer"/>
    <const name="PRIdLEAST32" link="cpp/types/integer"/>
    <const name="PRIdLEAST64" link="cpp/types/integer"/>
    <const name="PRIdFAST8" link="cpp/types/integer"/>
    <const name="PRIdFAST16" link="cpp/types/integer"/>
    <const name="PRIdFAST32" link="cpp/types/integer"/>
    <const name="PRIdFAST64" link="cpp/types/integer"/>
    <const name="PRIdMAX" link="cpp/types/integer"/>
    <const name="PRIdPTR " link="cpp/types/integer"/>

    <const name="PRIi8" link="cpp/types/integer"/>
    <const name="PRIi16" link="cpp/types/integer"/>
    <const name="PRIi32" link="cpp/types/integer"/>
    <const name="PRIi64" link="cpp/types/integer"/>
    <const name="PRIiLEAST8" link="cpp/types/integer"/>
    <const name="PRIiLEAST16" link="cpp/types/integer"/>
    <const name="PRIiLEAST32" link="cpp/types/integer"/>
    <const name="PRIiLEAST64" link="cpp/types/integer"/>
    <const name="PRIiFAST8" link="cpp/types/integer"/>
    <const name="PRIiFAST16" link="cpp/types/integer"/>
    <const name="PRIiFAST32" link="cpp/types/integer"/>
    <const name="PRIiFAST64" link="cpp/types/integer"/>
    <const name="PRIiMAX" link="cpp/types/integer"/>
    <const name="PRIiPTR " link="cpp/types/integer"/>

    <const name="PRIu8" link="cpp/types/integer"/>
    <const name="PRIu16" link="cpp/types/integer"/>
    <const name="PRIu32" link="cpp/types/integer"/>
    <const name="PRIu64" link="cpp/types/integer"/>
    <const name="PRIuLEAST8" link="cpp/types/integer"/>
    <const name="PRIuLEAST16" link="cpp/types/integer"/>
    <const name="PRIuLEAST32" link="cpp/types/integer"/>
    <const name="PRIuLEAST64" link="cpp/types/integer"/>
    <const name="PRIuFAST8" link="cpp/types/integer"/>
    <const name="PRIuFAST16" link="cpp/types/integer"/>
    <const name="PRIuFAST32" link="cpp/types/integer"/>
    <const name="PRIuFAST64" link="cpp/types/integer"/>
    <const name="PRIuMAX" link="cpp/types/integer"/>
    <const name="PRIuPTR " link="cpp/types/integer"/>

    <const name="PRIo8" link="cpp/types/integer"/>
    <const name="PRIo16" link="cpp/types/integer"/>
    <const name="PRIo32" link="cpp/types/integer"/>
    <const name="PRIo64" link="cpp/types/integer"/>
    <const name="PRIoLEAST8" link="cpp/types/integer"/>
    <const name="PRIoLEAST16" link="cpp/types/integer"/>
    <const name="PRIoLEAST32" link="cpp/types/integer"/>
    <const name="PRIoLEAST64" link="cpp/types/integer"/>
    <const name="PRIoFAST8" link="cpp/types/integer"/>
    <const name="PRIoFAST16" link="cpp/types/integer"/>
    <const name="PRIoFAST32" link="cpp/types/integer"/>
    <const name="PRIoFAST64" link="cpp/types/integer"/>
    <const name="PRIoMAX" link="cpp/types/integer"/>
    <const name="PRIoPTR " link="cpp/types/integer"/>

    <const name="PRIx8" link="cpp/types/integer"/>
    <const name="PRIx16" link="cpp/types/integer"/>
    <const name="PRIx32" link="cpp/types/integer"/>
    <const name="PRIx64" link="cpp/types/integer"/>
    <const name="PRIxLEAST8" link="cpp/types/integer"/>
    <const name="PRIxLEAST16" link="cpp/types/integer"/>
    <const name="PRIxLEAST32" link="cpp/types/integer"/>
    <const name="PRIxLEAST64" link="cpp/types/integer"/>
    <const name="PRIxFAST8" link="cpp/types/integer"/>
    <const name="PRIxFAST16" link="cpp/types/integer"/>
    <const name="PRIxFAST32" link="cpp/types/integer"/>
    <const name="PRIxFAST64" link="cpp/types/integer"/>
    <const name="PRIxMAX" link="cpp/types/integer"/>
    <const name="PRIxPTR " link="cpp/types/integer"/>

    <const name="PRIX8" link="cpp/types/integer"/>
    <const name="PRIX16" link="cpp/types/integer"/>
    <const name="PRIX32" link="cpp/types/integer"/>
    <const name="PRIX64" link="cpp/types/integer"/>
    <const name="PRIXLEAST8" link="cpp/types/integer"/>
    <const name="PRIXLEAST16" link="cpp/types/integer"/>
    <const name="PRIXLEAST32" link="cpp/types/integer"/>
    <const name="PRIXLEAST64" link="cpp/types/integer"/>
    <const name="PRIXFAST8" link="cpp/types/integer"/>
    <const name="PRIXFAST16" link="cpp/types/integer"/>
    <const name="PRIXFAST32" link="cpp/types/integer"/>
    <const name="PRIXFAST64" link="cpp/types/integer"/>
    <const name="PRIXMAX" link="cpp/types/integer"/>
    <const name="PRIXPTR " link="cpp/types/integer"/>

    <const name="SCNd8" link="cpp/types/integer"/>
    <const name="SCNd16" link="cpp/types/integer"/>
    <const name="SCNd32" link="cpp/types/integer"/>
    <const name="SCNd64" link="cpp/types/integer"/>
    <const name="SCNdLEAST8" link="cpp/types/integer"/>
    <const name="SCNdLEAST16" link="cpp/types/integer"/>
    <const name="SCNdLEAST32" link="cpp/types/integer"/>
    <const name="SCNdLEAST64" link="cpp/types/integer"/>
    <const name="SCNdFAST8" link="cpp/types/integer"/>
    <const name="SCNdFAST16" link="cpp/types/integer"/>
    <const name="SCNdFAST32" link="cpp/types/integer"/>
    <const name="SCNdFAST64" link="cpp/types/integer"/>
    <const name="SCNdMAX" link="cpp/types/integer"/>
    <const name="SCNdPTR " link="cpp/types/integer"/>

    <const name="SCNi8" link="cpp/types/integer"/>
    <const name="SCNi16" link="cpp/types/integer"/>
    <const name="SCNi32" link="cpp/types/integer"/>
    <const name="SCNi64" link="cpp/types/integer"/>
    <const name="SCNiLEAST8" link="cpp/types/integer"/>
    <const name="SCNiLEAST16" link="cpp/types/integer"/>
    <const name="SCNiLEAST32" link="cpp/types/integer"/>
    <const name="SCNiLEAST64" link="cpp/types/integer"/>
    <const name="SCNiFAST8" link="cpp/types/integer"/>
    <const name="SCNiFAST16" link="cpp/types/integer"/>
    <const name="SCNiFAST32" link="cpp/types/integer"/>
    <const name="SCNiFAST64" link="cpp/types/integer"/>
    <const name="SCNiMAX" link="cpp/types/integer"/>
    <const name="SCNiPTR " link="cpp/types/integer"/>

    <const name="SCNu8" link="cpp/types/integer"/>
    <const name="SCNu16" link="cpp/types/integer"/>
    <const name="SCNu32" link="cpp/types/integer"/>
    <const name="SCNu64" link="cpp/types/integer"/>
    <const name="SCNuLEAST8" link="cpp/types/integer"/>
    <const name="SCNuLEAST16" link="cpp/types/integer"/>
    <const name="SCNuLEAST32" link="cpp/types/integer"/>
    <const name="SCNuLEAST64" link="cpp/types/integer"/>
    <const name="SCNuFAST8" link="cpp/types/integer"/>
    <const name="SCNuFAST16" link="cpp/types/integer"/>
    <const name="SCNuFAST32" link="cpp/types/integer"/>
    <const name="SCNuFAST64" link="cpp/types/integer"/>
    <const name="SCNuMAX" link="cpp/types/integer"/>
    <const name="SCNuPTR " link="cpp/types/integer"/>

    <const name="SCNo8" link="cpp/types/integer"/>
    <const name="SCNo16" link="cpp/types/integer"/>
    <const name="SCNo32" link="cpp/types/integer"/>
    <const name="SCNo64" link="cpp/types/integer"/>
    <const name="SCNoLEAST8" link="cpp/types/integer"/>
    <const name="SCNoLEAST16" link="cpp/types/integer"/>
    <const name="SCNoLEAST32" link="cpp/types/integer"/>
    <const name="SCNoLEAST64" link="cpp/types/integer"/>
    <const name="SCNoFAST8" link="cpp/types/integer"/>
    <const name="SCNoFAST16" link="cpp/types/integer"/>
    <const name="SCNoFAST32" link="cpp/types/integer"/>
    <const name="SCNoFAST64" link="cpp/types/integer"/>
    <const name="SCNoMAX" link="cpp/types/integer"/>
    <const name="SCNoPTR " link="cpp/types/integer"/>

    <const name="SCNx8" link="cpp/types/integer"/>
    <const name="SCNx16" link="cpp/types/integer"/>
    <const name="SCNx32" link="cpp/types/integer"/>
    <const name="SCNx64" link="cpp/types/integer"/>
    <const name="SCNxLEAST8" link="cpp/types/integer"/>
    <const name="SCNxLEAST16" link="cpp/types/integer"/>
    <const name="SCNxLEAST32" link="cpp/types/integer"/>
    <const name="SCNxLEAST64" link="cpp/types/integer"/>
    <const name="SCNxFAST8" link="cpp/types/integer"/>
    <const name="SCNxFAST16" link="cpp/types/integer"/>
    <const name="SCNxFAST32" link="cpp/types/integer"/>
    <const name="SCNxFAST64" link="cpp/types/integer"/>
    <const name="SCNxMAX" link="cpp/types/integer"/>
    <const name="SCNxPTR " link="cpp/types/integer"/>

    <const name="SCNX8" link="cpp/types/integer"/>
    <const name="SCNX16" link="cpp/types/integer"/>
    <const name="SCNX32" link="cpp/types/integer"/>
    <const name="SCNX64" link="cpp/types/integer"/>
    <const name="SCNXLEAST8" link="cpp/types/integer"/>
    <const name="SCNXLEAST16" link="cpp/types/integer"/>
    <const name="SCNXLEAST32" link="cpp/types/integer"/>
    <const name="SCNXLEAST64" link="cpp/types/integer"/>
    <const name="SCNXFAST8" link="cpp/types/integer"/>
    <const name="SCNXFAST16" link="cpp/types/integer"/>
    <const name="SCNXFAST32" link="cpp/types/integer"/>
    <const name="SCNXFAST64" link="cpp/types/integer"/>
    <const name="SCNXMAX" link="cpp/types/integer"/>
    <const name="SCNXPTR" link="cpp/types/integer"/>

        <!-- cpp/types/numeric_limits -->

    <class name="std::numeric_limits" link="cpp/types/numeric_limits" type="template">
        <const name="is_specialized"/>
        <const name="is_signed"/>
        <const name="is_integer"/>
        <const name="is_exact"/>

        <const name="has_infinity"/>
        <const name="has_quiet_NaN"/>
        <const name="has_signaling_NaN"/>
        <const name="has_denorm"/>
        <const name="has_denorm_loss"/>

        <const name="round_style"/>

        <const name="is_iec559"/>
        <const name="is_bounded"/>
        <const name="is_modulo"/>

        <const name="digits"/>
        <const name="digits10"/>
        <const name="max_digits10"/>

        <const name="radix"/>
        <const name="min_exponent"/>
        <const name="min_exponent10"/>
        <const name="max_exponent"/>
        <const name="max_exponent10"/>
        <const name="traps"/>
        <const name="tinyness_before"/>

        <function name="min"/>
        <function name="max"/>
        <function name="lowest"/>
        <function name="epsilon"/>
        <function name="round_error"/>
        <function name="infinity"/>
        <function name="quiet_NaN"/>
        <function name="signaling_NaN"/>
        <function name="denorm_min"/>
    </class>

    <enum name="std::float_round_style" link="cpp/types/numeric_limits/float_round_style"/>
    <const name="std::round_indeterminate" link="cpp/types/numeric_limits/float_round_style"/>
    <const name="std::round_toward_zero" link="cpp/types/numeric_limits/float_round_style"/>
    <const name="std::round_to_nearest" link="cpp/types/numeric_limits/float_round_style"/>
    <const name="std::round_toward_infinity" link="cpp/types/numeric_limits/float_round_style"/>
    <const name="std::round_toward_neg_infinity" link="cpp/types/numeric_limits/float_round_style"/>

    <enum name="std::float_denorm_style" link="cpp/types/numeric_limits/float_denorm_style"/>
    <const name="std::denorm_indeterminate" link="cpp/types/numeric_limits/float_denorm_style"/>
    <const name="std::denorm_absent" link="cpp/types/numeric_limits/float_denorm_style"/>
    <const name="std::denorm_present" link="cpp/types/numeric_limits/float_denorm_style"/>

        <!-- cpp/types/climits -->
    <const name="PTRDIFF_MIN" link="cpp/types/climits"/>
    <const name="PTRDIFF_MAX" link="cpp/types/climits"/>
    <const name="SIZE_MAX" link="cpp/types/climits"/>
    <const name="SIG_ATOMIC_MIN" link="cpp/types/climits"/>
    <const name="SIG_ATOMIC_MAX" link="cpp/types/climits"/>
    <const name="WCHAR_MIN" link="cpp/types/climits"/>
    <const name="WCHAR_MAX" link="cpp/types/climits"/>
    <const name="WINT_MIN" link="cpp/types/climits"/>
    <const name="WINT_MAX" link="cpp/types/climits"/>

    <const name="CHAR_BIT" link="cpp/types/climits"/>
    <const name="MB_LEN_MAX" link="cpp/types/climits"/>
    <const name="CHAR_MIN" link="cpp/types/climits"/>
    <const name="CHAR_MAX" link="cpp/types/climits"/>

    <const name="SCHAR_MIN" link="cpp/types/climits"/>
    <const name="SHRT_MIN" link="cpp/types/climits"/>
    <const name="INT_MIN" link="cpp/types/climits"/>
    <const name="LONG_MIN" link="cpp/types/climits"/>
    <const name="LLONG_MIN" link="cpp/types/climits"/>

    <const name="SCHAR_MAX" link="cpp/types/climits"/>
    <const name="SHRT_MAX" link="cpp/types/climits"/>
    <const name="INT_MAX" link="cpp/types/climits"/>
    <const name="LONG_MAX" link="cpp/types/climits"/>
    <const name="LLONG_MAX" link="cpp/types/climits"/>

    <const name="UCHAR_MAX" link="cpp/types/climits"/>
    <const name="USHRT_MAX" link="cpp/types/climits"/>
    <const name="UINT_MAX" link="cpp/types/climits"/>
    <const name="ULONG_MAX" link="cpp/types/climits"/>
    <const name="ULLONG_MAX" link="cpp/types/climits"/>

    <const name="FLT_RADIX" link="cpp/types/climits"/>
    <const name="DECIMAL_DIG" link="cpp/types/climits"/>

    <const name="FLT_MIN" link="cpp/types/climits"/>
    <const name="DBL_MIN" link="cpp/types/climits"/>
    <const name="LDBL_MIN" link="cpp/types/climits"/>

    <const name="FLT_MAX" link="cpp/types/climits"/>
    <const name="DBL_MAX" link="cpp/types/climits"/>
    <const name="LDBL_MAX" link="cpp/types/climits"/>

    <const name="FLT_EPSILON" link="cpp/types/climits"/>
    <const name="DBL_EPSILON" link="cpp/types/climits"/>
    <const name="LDBL_EPSILON" link="cpp/types/climits"/>

    <const name="FLT_DIG" link="cpp/types/climits"/>
    <const name="DBL_DIG" link="cpp/types/climits"/>
    <const name="LDBL_DIG" link="cpp/types/climits"/>

    <const name="FLT_MANT_DIG" link="cpp/types/climits"/>
    <const name="DBL_MANT_DIG" link="cpp/types/climits"/>
    <const name="LDBL_MANT_DIG" link="cpp/types/climits"/>

    <const name="FLT_MIN_EXP" link="cpp/types/climits"/>
    <const name="DBL_MIN_EXP" link="cpp/types/climits"/>
    <const name="LDBL_MIN_EXP" link="cpp/types/climits"/>

    <const name="FLT_MIN_10_EXP" link="cpp/types/climits"/>
    <const name="DBL_MIN_10_EXP" link="cpp/types/climits"/>
    <const name="LDBL_MIN_10_EXP" link="cpp/types/climits"/>

    <const name="FLT_MAX_EXP" link="cpp/types/climits"/>
    <const name="DBL_MAX_EXP" link="cpp/types/climits"/>
    <const name="LDBL_MAX_EXP" link="cpp/types/climits"/>

    <const name="FLT_MAX_10_EXP" link="cpp/types/climits"/>
    <const name="DBL_MAX_10_EXP" link="cpp/types/climits"/>
    <const name="LDBL_MAX_10_EXP" link="cpp/types/climits"/>

    <const name="FLT_ROUNDS" link="cpp/types/climits/FLT_ROUNDS"/>
    <const name="FLT_EVAL_METHOD" link="cpp/types/climits/FLT_EVAL_METHOD"/>

        <!-- RTTI -->

    <class name="std::type_info" link="cpp/types/type_info">
        <function name="operator==" link="operator_cmp"/>
        <function name="operator!=" link="operator_cmp"/>
        <function name="before"/>
        <function name="hash_code"/>
        <function name="name"/>
    </class>

    <class name="std::type_index" link="cpp/types/type_index">
        <constructor/>
        <function name="operator==" link="operator_cmp"/>
        <function name="operator!=" link="operator_cmp"/>
        <function name="operator&lt;=" link="operator_cmp"/>
        <function name="operator&lt;" link="operator_cmp"/>
        <function name="operator&gt;=" link="operator_cmp"/>
        <function name="operator&gt;" link="operator_cmp"/>
        <function name="hash_code"/>
        <function name="name"/>

        <specialization name="std::hash" link="hash"/>
    </class>

    <class name="std::bad_typeid" link="cpp/types/bad_typeid">
        <inherits name="std::exception"/>
        <constructor/>
    </class>

    <class name="std::bad_cast" link="cpp/types/bad_cast">
        <inherits name="std::exception"/>
        <constructor/>
    </class>

        <!-- type traits -->

    <class name="std::is_void" link="cpp/types/is_void"/>
    <class name="std::is_integral" link="cpp/types/is_integral"/>
    <class name="std::is_floating_point" link="cpp/types/is_floating_point"/>
    <class name="std::is_array" link="cpp/types/is_array"/>
    <class name="std::is_pointer" link="cpp/types/is_pointer"/>
    <class name="std::is_lvalue_reference" link="cpp/types/is_lvalue_reference"/>
    <class name="std::is_rvalue_reference" link="cpp/types/is_rvalue_reference"/>
    <class name="std::is_member_object_pointer" link="cpp/types/is_member_object_pointer"/>
    <class name="std::is_member_function_pointer" link="cpp/types/is_member_function_pointer"/>
    <class name="std::is_enum" link="cpp/types/is_enum"/>
    <class name="std::is_union" link="cpp/types/is_union"/>
    <class name="std::is_class" link="cpp/types/is_class"/>
    <class name="std::is_function" link="cpp/types/is_function"/>

    <class name="std::is_reference" link="cpp/types/is_reference"/>
    <class name="std::is_arithmetic" link="cpp/types/is_arithmetic"/>
    <class name="std::is_fundamental" link="cpp/types/is_fundamental"/>
    <class name="std::is_object" link="cpp/types/is_object"/>
    <class name="std::is_scalar" link="cpp/types/is_scalar"/>
    <class name="std::is_compound" link="cpp/types/is_compound"/>
    <class name="std::is_member_pointer" link="cpp/types/is_member_pointer"/>

    <class name="std::is_const" link="cpp/types/is_const"/>
    <class name="std::is_volatile" link="cpp/types/is_volatile"/>
    <class name="std::is_trivial" link="cpp/types/is_trivial"/>
    <class name="std::is_trivially_copyable" link="cpp/types/is_trivially_copyable"/>
    <class name="std::is_standard_layout" link="cpp/types/is_standard_layout"/>
    <class name="std::is_pod" link="cpp/types/is_pod"/>
    <class name="std::is_literal_type" link="cpp/types/is_literal_type"/>
    <class name="std::is_empty" link="cpp/types/is_empty"/>
    <class name="std::is_polymorphic" link="cpp/types/is_polymorphic"/>
    <class name="std::is_abstract" link="cpp/types/is_abstract"/>
    <class name="std::is_signed" link="cpp/types/is_signed"/>
    <class name="std::is_unsigned" link="cpp/types/is_unsigned"/>

    <class name="std::is_constructible" link="cpp/types/is_constructible"/>
    <class name="std::is_trivially_constructible" link="cpp/types/is_constructible"/>
    <class name="std::is_nothrow_constructible" link="cpp/types/is_constructible"/>
    <class name="std::is_default_constructible" link="cpp/types/is_default_constructible"/>
    <class name="std::is_trivially_default_constructible" link="cpp/types/is_default_constructible"/>
    <class name="std::is_nothrow_default_constructible" link="cpp/types/is_default_constructible"/>
    <class name="std::is_copy_constructible" link="cpp/types/is_copy_constructible"/>
    <class name="std::is_trivially_copy_constructible" link="cpp/types/is_copy_constructible"/>
    <class name="std::is_nothrow_copy_constructible" link="cpp/types/is_copy_constructible"/>
    <class name="std::is_move_constructible" link="cpp/types/is_move_constructible"/>
    <class name="std::is_trivially_move_constructible" link="cpp/types/is_move_constructible"/>
    <class name="std::is_nothrow_move_constructible" link="cpp/types/is_move_constructible"/>

    <class name="std::is_assignable" link="cpp/types/is_assignable"/>
    <class name="std::is_trivially_assignable" link="cpp/types/is_assignable"/>
    <class name="std::is_nothrow_assignable" link="cpp/types/is_assignable"/>
    <class name="std::is_copy_assignable" link="cpp/types/is_copy_assignable"/>
    <class name="std::is_trivially_copy_assignable" link="cpp/types/is_copy_assignable"/>
    <class name="std::is_nothrow_copy_assignable" link="cpp/types/is_copy_assignable"/>
    <class name="std::is_move_assignable" link="cpp/types/is_move_assignable"/>
    <class name="std::is_trivially_move_assignable" link="cpp/types/is_move_assignable"/>
    <class name="std::is_nothrow_move_assignable" link="cpp/types/is_move_assignable"/>
    <class name="std::is_destructible" link="cpp/types/is_destructible"/>
    <class name="std::is_trivially_destructible" link="cpp/types/is_destructible"/>
    <class name="std::is_nothrow_destructible" link="cpp/types/is_destructible"/>

    <class name="std::has_virtual_destructor" link="cpp/types/has_virtual_destructor"/>

    <class name="std::alignment_of" link="cpp/types/alignment_of"/>
    <class name="std::rank" link="cpp/types/rank"/>
    <class name="std::extent" link="cpp/types/extent"/>

    <class name="std::is_same" link="cpp/types/is_same"/>
    <class name="std::is_base_of" link="cpp/types/is_base_of"/>
    <class name="std::is_convertible" link="cpp/types/is_convertible"/>

    <class name="std::remove_cv" link="cpp/types/remove_cv"/>
    <class name="std::remove_const" link="cpp/types/remove_cv"/>
    <class name="std::remove_volatile" link="cpp/types/remove_cv"/>
    <class name="std::add_cv" link="cpp/types/add_cv"/>
    <class name="std::add_const" link="cpp/types/add_cv"/>
    <class name="std::add_volatile" link="cpp/types/add_cv"/>

    <class name="std::remove_reference" link="cpp/types/remove_reference"/>
    <class name="std::add_lvalue_reference" link="cpp/types/add_reference"/>
    <class name="std::add_rvalue_reference" link="cpp/types/add_reference"/>

    <class name="std::remove_pointer" link="cpp/types/remove_pointer"/>
    <class name="std::add_pointer" link="cpp/types/add_pointer"/>

    <class name="std::make_signed" link="cpp/types/make_signed"/>
    <class name="std::make_unsigned" link="cpp/types/make_unsigned"/>

    <class name="std::remove_extent" link="cpp/types/remove_extent"/>
    <class name="std::remove_all_extents" link="cpp/types/remove_all_extents"/>

    <class name="std::aligned_storage" link="cpp/types/aligned_storage"/>
    <class name="std::aligned_union" link="cpp/types/aligned_union"/>
    <class name="std::decay" link="cpp/types/decay"/>
    <class name="std::enable_if" link="cpp/types/enable_if"/>
    <class name="std::conditional" link="cpp/types/conditional"/>
    <class name="std::common_type" link="cpp/types/common_type"/>
    <class name="std::underlying_type" link="cpp/types/underlying_type"/>
    <class name="std::result_of" link="cpp/types/result_of"/>
    <class name="std::integral_constant" link="cpp/types/integral_constant"/>
    <typedef name="std::true_type" alias="std::integral_constant"/>
    <typedef name="std::false_type" alias="std::integral_constant"/>

    <!--=======================================================================-->
    <!-- cpp/iterator -->

    <class name="std::iterator_traits" link="cpp/iterator/iterator_traits"/>
    <class name="std::input_iterator_tag" link="cpp/iterator/iterator_tags"/>
    <class name="std::output_iterator_tag" link="cpp/iterator/iterator_tags"/>
    <class name="std::forward_iterator_tag" link="cpp/iterator/iterator_tags"/>
    <class name="std::bidirectional_iterator_tag" link="cpp/iterator/iterator_tags"/>
    <class name="std::random_access_iterator_tag" link="cpp/iterator/iterator_tags"/>
    <class name="std::iterator" link="cpp/iterator/iterator"/>

    <class name="std::reverse_iterator" link="cpp/iterator/reverse_iterator">
        <!-- todo -->
    </class>
    <class name="std::move_iterator" link="cpp/iterator/move_iterator">
        <!-- todo -->
    </class>
    <class name="std::back_insert_iterator" link="cpp/iterator/back_insert_iterator">
        <!-- todo -->
    </class>
    <class name="std::front_insert_iterator" link="cpp/iterator/front_insert_iterator">
        <!-- todo -->
    </class>
    <class name="std::insert_iterator" link="cpp/iterator/insert_iterator">
        <!-- todo -->
    </class>

    <function name="std::make_move_iterator" link="cpp/iterator/make_move_iterator"/>
    <function name="std::back_inserter" link="cpp/iterator/back_inserter"/>
    <function name="std::front_inserter" link="cpp/iterator/front_inserter"/>
    <function name="std::inserter" link="cpp/iterator/inserter"/>

    <class name="std::istream_iterator" link="cpp/iterator/istream_iterator">
        <!-- todo -->
    </class>
    <class name="std::istreambuf_iterator" link="cpp/iterator/istreambuf_iterator">
        <!-- todo -->
    </class>
    <class name="std::ostream_iterator" link="cpp/iterator/ostream_iterator">
        <!-- todo -->
    </class>
    <class name="std::ostreambuf_iterator" link="cpp/iterator/ostreambuf_iterator">
        <!-- todo -->
    </class>

    <function name="std::advance" link="cpp/iterator/advance"/>
    <function name="std::distance" link="cpp/iterator/distance"/>
    <function name="std::next" link="cpp/iterator/next"/>
    <function name="std::prev" link="cpp/iterator/prev"/>
    <function name="std::begin" link="cpp/iterator/begin"/>
    <function name="std::end" link="cpp/iterator/end"/>

    <!--=======================================================================-->
    <!-- cpp/utility/memory -->

        <!-- low level stuff -->

    <function name="operator new" link="cpp/memory/new/operator_new"/>
    <function name="operator new[]" link="cpp/memory/new/operator_new"/>
    <function name="operator delete" link="cpp/memory/new/operator_delete"/>
    <function name="operator delete[]" link="cpp/memory/new/operator_delete"/>

    <function name="std::get_new_handler" link="cpp/memory/new/get_new_handler"/>
    <function name="std::set_new_handler" link="cpp/memory/new/set_new_handler"/>

    <class name="std::bad_alloc" link="cpp/memory/new/bad_alloc">
        <inherits name="std::exception"/>
        <constructor link="."/>
        <function name="operator=" link="."/>
        <function name="what" link="."/>
    </class>

    <class name="std::bad_array_new_length" link="cpp/memory/new/bad_array_new_length">
        <inherits name="std::bad_alloc"/>
        <constructor/>
    </class>

    <class name="std::bad_array_length" link="cpp/memory/new/bad_array_length" since="c++14">
        <inherits name="std::bad_alloc"/>
        <constructor link="."/>
    </class>

    <class name="std::nothrow_t" link="cpp/memory/new/nothrow_t"/>
    <typedef name="std::new_handler" link="cpp/memory/new/new_handler"/>

    <const name="std::nothrow" link="cpp/memory/new/nothrow"/>

        <!-- high level stuff -->

    <class name="std::allocator" link="cpp/memory/allocator">
        <constructor/>
        <destructor/>
        <function name="address"/>
        <function name="allocate"/>
        <function name="deallocate"/>
        <function name="max_size"/>
        <function name="construct"/>
        <function name="destroy"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>
    </class>

    <class name="std::allocator_traits" link="cpp/memory/allocator_traits">
        <function name="allocate"/>
        <function name="deallocate"/>
        <function name="max_size"/>
        <function name="construct"/>
        <function name="destroy"/>
        <function name="select_on_container_copy_construction"/>
    </class>

    <class name="std::allocator_arg_t" link="cpp/memory/allocator_arg_t"/>
    <const name="std::allocator_arg" link="cpp/memory/allocator_arg"/>

    <class name="std::uses_allocator" link="cpp/memory/uses_allocator"/>

    <class name="std::scoped_allocator_adaptor" link="cpp/memory/scoped_allocator_adaptor">
        <constructor/>
        <destructor/>
        <function name="inner_allocator"/>
        <function name="outer_allocator"/>
        <function name="allocate"/>
        <function name="deallocate"/>
        <function name="max_size"/>
        <function name="construct"/>
        <function name="destroy"/>
        <function name="select_on_container_copy_construction"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>
    </class>

    <function name="std::uninitialized_copy" link="cpp/memory/uninitialized_copy"/>
    <function name="std::uninitialized_copy_n" link="cpp/memory/uninitialized_copy_n"/>
    <function name="std::uninitialized_fill" link="cpp/memory/uninitialized_fill"/>
    <function name="std::uninitialized_fill_n" link="cpp/memory/uninitialized_fill_n"/>

    <class name="std::raw_storage_iterator" link="cpp/memory/raw_storage_iterator">
        <constructor/>
        <function name="operator*"/>
        <function name="operator="/>
        <function name="operator++" link="operator_arith"/>
    </class>

    <function name="std::get_temporary_buffer" link="cpp/memory/get_temporary_buffer"/>
    <function name="std::return_temporary_buffer" link="cpp/memory/return_temporary_buffer"/>

    <class name="std::unique_ptr" link="cpp/memory/unique_ptr">
        <constructor/>
        <destructor/>
        <function name="operator="/>
        <function name="release"/>
        <function name="reset"/>
        <function name="swap"/>
        <function name="get"/>
        <function name="get_deleter"/>
        <function name="operator*"/>
        <function name="operator->" link="operator*"/>
        <function name="operator bool" link="operator_bool"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>
        <overload name="operator&lt;" link="operator_cmp"/>
        <overload name="operator&lt;=" link="operator_cmp"/>
        <overload name="operator&gt;" link="operator_cmp"/>
        <overload name="operator&gt;=" link="operator_cmp"/>

        <overload name="std::swap" link="swap2"/>
        <specialization name="std::hash" link="hash"/>
    </class>

    <class name="std::shared_ptr" link="cpp/memory/shared_ptr">
        <constructor/>
        <destructor/>
        <function name="operator="/>
        <function name="reset"/>
        <function name="swap"/>
        <function name="get"/>
        <function name="operator*"/>
        <function name="operator->" link="operator*"/>
        <function name="unique"/>
        <function name="operator bool" link="operator_bool"/>
        <function name="owner_before"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>
        <overload name="operator&lt;" link="operator_cmp"/>
        <overload name="operator&lt;=" link="operator_cmp"/>
        <overload name="operator&gt;" link="operator_cmp"/>
        <overload name="operator&gt;=" link="operator_cmp"/>

        <overload name="operator&lt;&lt;" link="operator_ltlt"/>
        <overload name="std::swap" link="swap2"/>
        <overload name="std::get_deleter" link="get_deleter"/>

        <overload name="std::atomic_is_lock_free" link="atomic"/>
        <overload name="std::atomic_load" link="atomic"/>
        <overload name="std::atomic_load_explicit" link="atomic"/>
        <overload name="std::atomic_store" link="atomic"/>
        <overload name="std::atomic_store_explicit" link="atomic"/>
        <overload name="std::atomic_exchange" link="atomic"/>
        <overload name="std::atomic_exchange_explicit" link="atomic"/>
        <overload name="std::compare_exchange_weak" link="atomic"/>
        <overload name="std::compare_exchange_strong" link="atomic"/>
        <overload name="std::compare_exchange_weak_explicit" link="atomic"/>
        <overload name="std::compare_exchange_strong_explicit" link="atomic"/>
        <specialization name="std::hash" link="hash"/>
    </class>

    <function name="std::make_shared" link="cpp/memory/shared_ptr/make_shared"/>
    <function name="std::allocate_shared" link="cpp/memory/shared_ptr/allocate_shared"/>
    <function name="std::static_pointer_cast" link="cpp/memory/shared_ptr/pointer_cast"/>
    <function name="std::dynamic_pointer_cast" link="cpp/memory/shared_ptr/pointer_cast"/>
    <function name="std::const_pointer_cast" link="cpp/memory/shared_ptr/pointer_cast"/>

    <class name="std::weak_ptr" link="cpp/memory/weak_ptr">
        <constructor/>
        <destructor/>
        <function name="operator="/>
        <function name="reset"/>
        <function name="swap"/>
        <function name="use_count"/>
        <function name="expired"/>
        <function name="lock"/>
        <function name="owner_before"/>

        <overload name="std::swap" link="swap"/>
    </class>

     <class name="std::auto_ptr" link="cpp/memory/auto_ptr">
        <constructor/>
        <destructor/>
        <function name="operator="/>
        <function name="reset"/>
        <function name="release"/>
        <function name="get"/>
        <function name="operator*"/>
        <function name="operator->" link="operator*"/>

        <function name="operator auto_ptr&lt;Y&gt;" link="operator_auto_ptr"/>
    </class>

    <class name="std::owner_less" link="cpp/memory/owner_less">
        <function name="operator()" link="."/>
    </class>

    <class name="std::enable_shared_from_this" link="cpp/memory/enable_shared_from_this">
        <constructor/>
        <destructor/>
        <function name="operator="/>
        <function name="shared_from_this"/>
    </class>

    <class name="std::bad_weak_ptr" link="cpp/memory/bad_weak_ptr">
        <inherits name="std::exception"/>
        <constructor/>
        <function name="what" link="."/>
    </class>

    <class name="std::default_delete" link="cpp/memory/default_delete">
        <constructor link="."/>
        <function name="operator()" link="."/>
    </class>

    <function name="std::declare_reachable" link="cpp/memory/gc/declare_reachable"/>
    <function name="std::undeclare_reachable" link="cpp/memory/gc/undeclare_reachable"/>
    <function name="std::declare_no_pointers" link="cpp/memory/gc/declare_no_pointers"/>
    <function name="std::undeclare_no_pointers" link="cpp/memory/gc/undeclare_no_pointers"/>

    <class name="std::pointer_safety" link="cpp/memory/gc/pointer_safety">
        <const name="relaxed" link="."/>
        <const name="preferred" link="."/>
        <const name="strict" link="."/>
    </class>
    <function name="std::get_pointer_safety" link="cpp/memory/gc/get_pointer_safety"/>

    <class name="std::pointer_traits" link="cpp/memory/pointer_traits">
        <function name="pointer_to"/>
    </class>

    <function name="std::addressof" link="cpp/memory/addressof"/>
    <function name="std::align" link="cpp/memory/align"/>

    <function name="std::malloc" link="cpp/memory/c/malloc"/>
    <function name="std::calloc" link="cpp/memory/c/calloc"/>
    <function name="std::realloc" link="cpp/memory/c/realloc"/>
    <function name="std::free" link="cpp/memory/c/free"/>

    <!--=======================================================================-->
    <!-- cpp/utility/error -->

    <class name="std::exception" link="cpp/error/exception">
        <constructor/>
        <destructor/>
        <function name="operator="/>
        <function name="what"/>
    </class>

    <class name="std::logic_error" link="cpp/error/logic_error">
        <inherits name="std::exception"/>
        <constructor link="."/>
    </class>

    <class name="std::domain_error" link="cpp/error/domain_error">
        <inherits name="std::exception"/>
        <constructor link="."/>
    </class>

    <class name="std::length_error" link="cpp/error/length_error">
        <inherits name="std::exception"/>
        <constructor link="."/>
    </class>

    <class name="std::out_of_range" link="cpp/error/out_of_range">
        <inherits name="std::exception"/>
        <constructor link="."/>
    </class>

    <class name="std::invalid_argument" link="cpp/error/invalid_argument">
        <inherits name="std::exception"/>
        <constructor link="."/>
    </class>

    <class name="std::runtime_error" link="cpp/error/runtime_error">
        <inherits name="std::exception"/>
        <constructor link="."/>
    </class>

    <class name="std::range_error" link="cpp/error/range_error">
        <inherits name="std::exception"/>
        <constructor link="."/>
    </class>

    <class name="std::overflow_error" link="cpp/error/overflow_error">
        <inherits name="std::exception"/>
        <constructor link="."/>
    </class>

    <class name="std::underflow_error" link="cpp/error/underflow_error">
        <inherits name="std::exception"/>
        <constructor link="."/>
    </class>

    <function name="assert" link="cpp/error/assert"/>

    <function name="std::uncaught_exception" link="cpp/error/uncaught_exception"/>
    <typedef name="std::exception_ptr" link="cpp/error/exception_ptr"/>
    <function name="std::make_exception_ptr" link="cpp/error/make_exception_ptr"/>
    <function name="std::current_exception" link="cpp/error/current_exception"/>
    <function name="std::rethrow_exception" link="cpp/error/rethrow_exception"/>

    <class name="std::nested_exception" link="cpp/error/nested_exception">
        <constructor/>
        <destructor/>
        <function name="operator="/>
        <function name="rethrow_nested"/>
        <function name="nested_ptr"/>
    </class>
    <function name="std::throw_with_nested" link="cpp/error/throw_with_nested"/>
    <function name="std::rethrow_if_nested" link="cpp/error/rethrow_if_nested"/>

    <function name="std::terminate" link="cpp/error/terminate"/>
    <typedef name="std::terminate_handler" link="cpp/error/terminate_handler"/>
    <function name="std::get_terminate" link="cpp/error/get_terminate"/>
    <function name="std::set_terminate" link="cpp/error/set_terminate"/>

    <function name="std::unexpected" link="cpp/error/unexpected"/>
    <class name="std::bad_exception" link="cpp/error/bad_exception"/>
    <typedef name="std::unexpected_handler" link="cpp/error/unexpected_handler"/>
    <function name="std::get_unexpected" link="cpp/error/get_unexpected"/>
    <function name="std::set_unexpected" link="cpp/error/set_unexpected"/>

    <const name="errno" link="cpp/error/errno"/>
    <const name="E2BIG" link="cpp/error/errno_macros"/>
    <const name="EACCESS" link="cpp/error/errno_macros"/>
    <const name="EADDRINUSE" link="cpp/error/errno_macros"/>
    <const name="EADDRNOTAVAIL" link="cpp/error/errno_macros"/>
    <const name="EAFNOSUPPORT" link="cpp/error/errno_macros"/>
    <const name="EAGAIN" link="cpp/error/errno_macros"/>
    <const name="EALREADY" link="cpp/error/errno_macros"/>
    <const name="EBADF" link="cpp/error/errno_macros"/>
    <const name="EBADMSG" link="cpp/error/errno_macros"/>
    <const name="EBUSY" link="cpp/error/errno_macros"/>
    <const name="ECANCELED" link="cpp/error/errno_macros"/>
    <const name="ECHILD" link="cpp/error/errno_macros"/>
    <const name="ECONNABORTED" link="cpp/error/errno_macros"/>
    <const name="ECONNREFUSED" link="cpp/error/errno_macros"/>
    <const name="ECONNRESET" link="cpp/error/errno_macros"/>
    <const name="EDEADLK" link="cpp/error/errno_macros"/>
    <const name="EDESTADDRREQ" link="cpp/error/errno_macros"/>
    <const name="EDOM" link="cpp/error/errno_macros"/>
    <const name="EEXIST" link="cpp/error/errno_macros"/>
    <const name="EFAULT" link="cpp/error/errno_macros"/>
    <const name="EFBIG" link="cpp/error/errno_macros"/>
    <const name="EHOSTUNREACH" link="cpp/error/errno_macros"/>
    <const name="EIDRM" link="cpp/error/errno_macros"/>
    <const name="EILSEQ" link="cpp/error/errno_macros"/>
    <const name="EINPROGRESS" link="cpp/error/errno_macros"/>
    <const name="EINTR" link="cpp/error/errno_macros"/>
    <const name="EINVAL" link="cpp/error/errno_macros"/>
    <const name="EIO" link="cpp/error/errno_macros"/>
    <const name="EISCONN" link="cpp/error/errno_macros"/>
    <const name="EISDIR" link="cpp/error/errno_macros"/>
    <const name="ELOOP" link="cpp/error/errno_macros"/>
    <const name="EMFILE" link="cpp/error/errno_macros"/>
    <const name="EMLINK" link="cpp/error/errno_macros"/>
    <const name="EMSGSIZE" link="cpp/error/errno_macros"/>
    <const name="ENAMETOOLONG" link="cpp/error/errno_macros"/>
    <const name="ENETDOWN" link="cpp/error/errno_macros"/>
    <const name="ENETRESET" link="cpp/error/errno_macros"/>
    <const name="ENETUNREACH" link="cpp/error/errno_macros"/>
    <const name="ENFILE" link="cpp/error/errno_macros"/>
    <const name="ENOBUFS" link="cpp/error/errno_macros"/>
    <const name="ENODATA" link="cpp/error/errno_macros"/>
    <const name="ENODEV" link="cpp/error/errno_macros"/>
    <const name="ENOENT" link="cpp/error/errno_macros"/>
    <const name="ENOEXEC" link="cpp/error/errno_macros"/>
    <const name="ENOLCK" link="cpp/error/errno_macros"/>
    <const name="ENOLINK" link="cpp/error/errno_macros"/>
    <const name="ENOMEM" link="cpp/error/errno_macros"/>
    <const name="ENOMSG" link="cpp/error/errno_macros"/>
    <const name="ENOPROTOOPT" link="cpp/error/errno_macros"/>
    <const name="ENOSPC" link="cpp/error/errno_macros"/>
    <const name="ENOSR" link="cpp/error/errno_macros"/>
    <const name="ENOSTR" link="cpp/error/errno_macros"/>
    <const name="ENOSYS" link="cpp/error/errno_macros"/>
    <const name="ENOTCONN" link="cpp/error/errno_macros"/>
    <const name="ENOTDIR" link="cpp/error/errno_macros"/>
    <const name="ENOTEMPTY" link="cpp/error/errno_macros"/>
    <const name="ENOTRECOVERABLE" link="cpp/error/errno_macros"/>
    <const name="ENOTSOCK" link="cpp/error/errno_macros"/>
    <const name="ENOTSUP" link="cpp/error/errno_macros"/>
    <const name="ENOTTY" link="cpp/error/errno_macros"/>
    <const name="ENXIO" link="cpp/error/errno_macros"/>
    <const name="EOPNOTSUPP" link="cpp/error/errno_macros"/>
    <const name="EOVERFLOW" link="cpp/error/errno_macros"/>
    <const name="EOWNERDEAD" link="cpp/error/errno_macros"/>
    <const name="EPERM" link="cpp/error/errno_macros"/>
    <const name="EPIPE" link="cpp/error/errno_macros"/>
    <const name="EPROTO" link="cpp/error/errno_macros"/>
    <const name="EPROTONOSUPPORT" link="cpp/error/errno_macros"/>
    <const name="EPROTOTYPE" link="cpp/error/errno_macros"/>
    <const name="ERANGE" link="cpp/error/errno_macros"/>
    <const name="EROFS" link="cpp/error/errno_macros"/>
    <const name="ESPIPE" link="cpp/error/errno_macros"/>
    <const name="ESRCH" link="cpp/error/errno_macros"/>
    <const name="ETIME" link="cpp/error/errno_macros"/>
    <const name="ETIMEDOUT" link="cpp/error/errno_macros"/>
    <const name="ETXTBSY" link="cpp/error/errno_macros"/>
    <const name="EWOULDBLOCK" link="cpp/error/errno_macros"/>
    <const name="EXDEV" link="cpp/error/errno_macros"/>

    <class name="std::error_category" link="cpp/error/error_category">
        <constructor/>
        <destructor/>
        <function name="name"/>
        <function name="default_error_condition"/>
        <function name="equivalent"/>
        <function name="message"/>
        <function name="operator==" link="operator_cmp"/>
        <function name="operator!=" link="operator_cmp"/>
        <function name="operator&lt;" link="operator_cmp"/>
    </class>

    <function name="std::generic_category" link="cpp/error/generic_category"/>
    <function name="std::system_category" link="cpp/error/system_category"/>

    <class name="std::error_condition" link="cpp/error/error_condition">
        <constructor/>
        <function name="operator="/>
        <function name="assign"/>
        <function name="clear"/>
        <function name="value"/>
        <function name="category"/>
        <function name="message"/>
        <function name="operator bool" link="operator_bool"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>
        <overload name="operator&lt;" link="operator_cmp"/>
    </class>

    <class name="std::is_error_condition_enum" link="cpp/error/error_condition/is_error_condition_enum"/>

    <class name="std::error_code" link="cpp/error/error_code">
        <constructor/>
        <function name="operator="/>
        <function name="assign"/>
        <function name="clear"/>
        <function name="value"/>
        <function name="category"/>
        <function name="default_error_condition"/>
        <function name="message"/>
        <function name="operator bool" link="operator_bool"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>
        <overload name="operator&lt;" link="operator_cmp"/>
        <overload name="operator&lt;&lt;" link="operator_ltlt"/>
    </class>

    <class name="std::is_error_code_enum" link="cpp/error/error_code/is_error_code_enum"/>

    <class name="std::errc" link="cpp/error/errc">
        <const name="address_family_not_supported" link="."/>
        <const name="address_in_use" link="."/>
        <const name="address_not_available" link="."/>
        <const name="already_connected" link="."/>
        <const name="argument_list_too_long" link="."/>
        <const name="argument_out_of_domain" link="."/>
        <const name="bad_address" link="."/>
        <const name="bad_file_descriptor" link="."/>
        <const name="bad_message" link="."/>
        <const name="broken_pipe" link="."/>
        <const name="connection_aborted" link="."/>
        <const name="connection_already_in_progress" link="."/>
        <const name="connection_refused" link="."/>
        <const name="connection_reset" link="."/>
        <const name="cross_device_link" link="."/>
        <const name="destination_address_required" link="."/>
        <const name="device_or_resource_busy" link="."/>
        <const name="directory_not_empty" link="."/>
        <const name="executable_format_error" link="."/>
        <const name="file_exists" link="."/>
        <const name="file_too_large" link="."/>
        <const name="filename_too_long" link="."/>
        <const name="function_not_supported" link="."/>
        <const name="host_unreachable" link="."/>
        <const name="identifier_removed" link="."/>
        <const name="illegal_byte_sequence" link="."/>
        <const name="inappropriate_io_control_operation" link="."/>
        <const name="interrupted" link="."/>
        <const name="invalid_argument" link="."/>
        <const name="invalid_seek" link="."/>
        <const name="io_error" link="."/>
        <const name="is_a_directory" link="."/>
        <const name="message_size" link="."/>
        <const name="network_down" link="."/>
        <const name="network_reset" link="."/>
        <const name="network_unreachable" link="."/>
        <const name="no_buffer_space" link="."/>
        <const name="no_child_process" link="."/>
        <const name="no_link" link="."/>
        <const name="no_lock_available" link="."/>
        <const name="no_message_available" link="."/>
        <const name="no_message" link="."/>
        <const name="no_protocol_option" link="."/>
        <const name="no_space_on_device" link="."/>
        <const name="no_stream_resources" link="."/>
        <const name="no_such_device_or_address" link="."/>
        <const name="no_such_device" link="."/>
        <const name="no_such_file_or_directory" link="."/>
        <const name="no_such_process" link="."/>
        <const name="not_a_directory" link="."/>
        <const name="not_a_socket" link="."/>
        <const name="not_a_stream" link="."/>
        <const name="not_connected" link="."/>
        <const name="not_enough_memory" link="."/>
        <const name="not_supported" link="."/>
        <const name="operation_canceled" link="."/>
        <const name="operation_in_progress" link="."/>
        <const name="operation_not_permitted" link="."/>
        <const name="operation_not_supported" link="."/>
        <const name="operation_would_block" link="."/>
        <const name="owner_dead" link="."/>
        <const name="permission_denied" link="."/>
        <const name="protocol_error" link="."/>
        <const name="protocol_not_supported" link="."/>
        <const name="read_only_file_system" link="."/>
        <const name="resource_deadlock_would_occur" link="."/>
        <const name="resource_unavailable_try_again" link="."/>
        <const name="result_out_of_range" link="."/>
        <const name="state_not_recoverable" link="."/>
        <const name="stream_timeout" link="."/>
        <const name="text_file_busy" link="."/>
        <const name="timed_out" link="."/>
        <const name="too_many_files_open_in_system" link="."/>
        <const name="too_many_files_open" link="."/>
        <const name="too_many_links" link="."/>
        <const name="too_many_symbolic_link_levels" link="."/>
        <const name="value_too_large" link="."/>
        <const name="wrong_protocol_type" link="."/>

        <specialization name="std::is_error_condition_enum" link="is_error_condition_enum"/>
        <overload name="std::make_error_code" link="make_error_code"/>
        <overload name="std::make_error_condition" link="make_error_condition"/>
    </class>

    <class name="std::system_error" link="cpp/error/system_error">
        <inherits name="std::runtime_error"/>
        <constructor/>
        <function name="code"/>
        <function name="what"/>
    </class>

    <!--=======================================================================-->
    <!-- cpp/utility/initializer_list -->

    <class name="std::initializer_list" link="cpp/utility/initializer_list">
        <constructor/>
        <function name="size"/>
        <function name="begin"/>
        <function name="end"/>

        <overload name="std::begin" link="begin2"/>
        <overload name="std::end" link="end2"/>
    </class>

    <!--=======================================================================-->
    <!-- cpp/utility/variadic -->

    <function name="va_start" link="cpp/utility/variadic/va_start"/>
    <function name="va_copy" link="cpp/utility/variadic/va_copy"/>
    <function name="va_arg" link="cpp/utility/variadic/va_arg"/>
    <function name="va_end" link="cpp/utility/variadic/va_end"/>
    <class name="va_list" link="cpp/utility/variadic/va_list"/>

    <!--=======================================================================-->
    <!-- cpp/utility/program -->

    <function name="std::abort" link="cpp/utility/program/abort"/>
    <function name="std::exit" link="cpp/utility/program/exit"/>
    <function name="std::quick_exit" link="cpp/utility/program/quick_exit"/>
    <function name="std::_Exit" link="cpp/utility/program/_Exit"/>
    <function name="std::atexit" link="cpp/utility/program/atexit"/>
    <function name="std::at_quick_exit" link="cpp/utility/program/at_quick_exit"/>

    <const name="EXIT_SUCCESS" link="cpp/utility/program/EXIT_status"/>
    <const name="EXIT_FAILURE" link="cpp/utility/program/EXIT_status"/>

    <function name="std::system" link="cpp/utility/program/system"/>
    <function name="std::getenv" link="cpp/utility/program/getenv"/>

    <function name="std::signal" link="cpp/utility/program/signal"/>
    <function name="std::raise" link="cpp/utility/program/raise"/>
    <typedef name="std::sig_atomic_t" link="cpp/utility/program/sig_atomic_t"/>

    <const name="SIG_DFL" link="cpp/utility/program/SIG_strategies"/>
    <const name="SIG_IGN" link="cpp/utility/program/SIG_strategies"/>
    <const name="SIG_ERR" link="cpp/utility/program/SIG_ERR"/>

    <const name="SIGABRT" link="cpp/utility/program/SIG_types"/>
    <const name="SIGFPE" link="cpp/utility/program/SIG_types"/>
    <const name="SIGILL" link="cpp/utility/program/SIG_types"/>
    <const name="SIGINT" link="cpp/utility/program/SIG_types"/>
    <const name="SIGSEGV" link="cpp/utility/program/SIG_types"/>
    <const name="SIGTERM" link="cpp/utility/program/SIG_types"/>

    <function name="std::longjmp" link="cpp/utility/program/longjmp"/>
    <function name="setjmp" link="cpp/utility/program/setjmp"/>
    <typedef name="std::jmp_buf" link="cpp/utility/program/jmp_buf"/>

    <!--=======================================================================-->
    <!-- cpp/chrono -->

    <class name="std::chrono::time_point" link="cpp/chrono/time_point">
        <constructor/>
        <function name="time_since_epoch"/>
        <function name="min"/>
        <function name="max"/>

        <function name="operator+" link="operator_arith"/>
        <function name="operator-" link="operator_arith"/>

        <overload name="operator+" link="operator_arith2"/>
        <overload name="operator-" link="operator_arith2"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>
        <overload name="operator&lt;" link="operator_cmp"/>
        <overload name="operator&lt;=" link="operator_cmp"/>
        <overload name="operator&gt;" link="operator_cmp"/>
        <overload name="operator&gt;=" link="operator_cmp"/>

        <specialization name="std::common_type" link="common_type"/>
    </class>

    <function name="std::chrono::time_point_cast" link="cpp/chrono/time_point/time_point_cast"/>

    <class name="std::chrono::duration" link="cpp/chrono/duration">
        <constructor/>
        <function name="operator="/>
        <function name="count"/>
        <function name="zero"/>
        <function name="min"/>
        <function name="max"/>

        <function name="operator+" link="operator_arith"/>
        <function name="operator-" link="operator_arith"/>

        <function name="operator++" link="operator_arith2"/>
        <function name="operator++(int)" link="operator_arith2"/>
        <function name="operator--" link="operator_arith2"/>
        <function name="operator--(int)" link="operator_arith2"/>

        <function name="operator+=" link="operator_arith3"/>
        <function name="operator-=" link="operator_arith3"/>
        <function name="operator*=" link="operator_arith3"/>
        <function name="operator/=" link="operator_arith3"/>
        <function name="operator%=" link="operator_arith3"/>

        <overload name="operator+" link="operator_arith4"/>
        <overload name="operator-" link="operator_arith4"/>
        <overload name="operator*" link="operator_arith4"/>
        <overload name="operator/" link="operator_arith4"/>
        <overload name="operator%" link="operator_arith4"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>
        <overload name="operator&lt;" link="operator_cmp"/>
        <overload name="operator&lt;=" link="operator_cmp"/>
        <overload name="operator&gt;" link="operator_cmp"/>
        <overload name="operator&gt;=" link="operator_cmp"/>

        <specialization name="std::common_type" link="common_type"/>
    </class>

    <typedef name="std::chrono::nanoseconds" alias="std::chrono::duration"/>
    <typedef name="std::chrono::microseconds" alias="std::chrono::duration"/>
    <typedef name="std::chrono::milliseconds" alias="std::chrono::duration"/>
    <typedef name="std::chrono::seconds" alias="std::chrono::duration"/>
    <typedef name="std::chrono::minutes" alias="std::chrono::duration"/>
    <typedef name="std::chrono::hours" alias="std::chrono::duration"/>

    <function name="std::chrono::duration_cast" link="cpp/chrono/duration/duration_cast"/>

    <class name="std::chrono::treat_as_floating_point" link="cpp/chrono/treat_as_floating_point">
    </class>

    <class name="std::chrono::duration_values" link="cpp/chrono/duration_values">
        <function name="zero"/>
        <function name="min"/>
        <function name="max"/>
    </class>

    <class name="std::chrono::system_clock" link="cpp/chrono/system_clock">
        <const name="is_steady" link="."/>
        <function name="now"/>
        <function name="to_time_t"/>
        <function name="from_time_t"/>
    </class>

    <class name="std::chrono::steady_clock" link="cpp/chrono/steady_clock">
        <const name="is_steady" link="."/>
        <function name="now"/>
    </class>

    <class name="std::chrono::high_resolution_clock" link="cpp/chrono/high_resolution_clock">
        <const name="is_steady" link="."/>
        <function name="now"/>
    </class>

    <!-- cpp/chrono/c -->

    <function name="std::difftime" link="cpp/chrono/c/difftime"/>
    <function name="std::time" link="cpp/chrono/c/time"/>
    <function name="std::clock" link="cpp/chrono/c/clock"/>

    <function name="std::asctime" link="cpp/chrono/c/asctime"/>
    <function name="std::ctime" link="cpp/chrono/c/ctime"/>
    <function name="std::strftime" link="cpp/chrono/c/strftime"/>
    <function name="std::wcsftime" link="cpp/chrono/c/wcsftime"/>
    <function name="std::gmtime" link="cpp/chrono/c/gmtime"/>
    <function name="std::localtime" link="cpp/chrono/c/localtime"/>
    <function name="std::mktime" link="cpp/chrono/c/mktime"/>

    <const name="CLOCKS_PER_SEC" link="cpp/chrono/c/CLOCKS_PER_SEC"/>

    <class name="std::tm" link="cpp/chrono/c/tm"/>
    <typedef name="std::time_t" link="cpp/chrono/c/time_t"/>
    <typedef name="std::clock_t" link="cpp/chrono/c/clock_t"/>

    <!--=======================================================================-->
    <!-- cpp/utility/bitset -->

    <class name="std::bitset" link="cpp/utility/bitset">
        <constructor/>

        <class name="reference"/>

        <function name="operator==" link="operator_cmp"/>
        <function name="operator!=" link="operator_cmp"/>

        <function name="operator[]" link="operator_at"/>
        <function name="test"/>
        <function name="all" link="all_any_none"/>
        <function name="any" link="all_any_none"/>
        <function name="none" link="all_any_none"/>
        <function name="count"/>

        <function name="size"/>
        <function name="operator&amp;=" link="operator_logic"/>
        <function name="operator|=" link="operator_logic"/>
        <function name="operator^=" link="operator_logic"/>
        <function name="operator~" link="operator_logic"/>
        <function name="operator&lt;&lt;=" link="operator_ltltgtgt"/>
        <function name="operator&gt;&gt;=" link="operator_ltltgtgt"/>
        <function name="operator&lt;&lt;" link="operator_ltltgtgt"/>
        <function name="operator&gt;&gt;" link="operator_ltltgtgt"/>
        <function name="set"/>
        <function name="reset"/>
        <function name="flip"/>

        <function name="to_string"/>
        <function name="to_ulong"/>
        <function name="to_ullong"/>

        <overload name="operator&amp;" link="operator_logic2"/>
        <overload name="operator|" link="operator_logic2"/>
        <overload name="operator^" link="operator_logic2"/>
        <overload name="operator&lt;&lt;" link="operator_ltltgtgt2"/>
        <overload name="operator&gt;&gt;" link="operator_ltltgtgt2"/>

        <specialization name="std::hash" link="hash"/>
    </class>

    <!--=======================================================================-->
    <!-- cpp/utility/functional -->

    <class name="std::plus" link="cpp/utility/functional/plus">
        <function name="operator()" link="."/>
    </class>

    <class name="std::minus" link="cpp/utility/functional/minus">
        <function name="operator()" link="."/>
    </class>

    <class name="std::multiplies" link="cpp/utility/functional/multiplies">
        <function name="operator()" link="."/>
    </class>

    <class name="std::divides" link="cpp/utility/functional/divides">
        <function name="operator()" link="."/>
    </class>

    <class name="std::modulus" link="cpp/utility/functional/modulus">
        <function name="operator()" link="."/>
    </class>

    <class name="std::negate" link="cpp/utility/functional/negate">
        <function name="operator()" link="."/>
    </class>

    <class name="std::equal_to" link="cpp/utility/functional/equal_to">
        <function name="operator()" link="."/>
    </class>

    <class name="std::not_equal_to" link="cpp/utility/functional/not_equal_to">
        <function name="operator()" link="."/>
    </class>

    <class name="std::greater" link="cpp/utility/functional/greater">
        <function name="operator()" link="."/>
    </class>

    <class name="std::greater_equal" link="cpp/utility/functional/greater_equal">
        <function name="operator()" link="."/>
    </class>

    <class name="std::less" link="cpp/utility/functional/less">
        <function name="operator()" link="."/>
    </class>

    <class name="std::less_equal" link="cpp/utility/functional/less_equal">
        <function name="operator()" link="."/>
    </class>

    <class name="std::logical_and" link="cpp/utility/functional/logical_and">
        <function name="operator()" link="."/>
    </class>

    <class name="std::logical_or" link="cpp/utility/functional/logical_or">
        <function name="operator()" link="."/>
    </class>

    <class name="std::logical_not" link="cpp/utility/functional/logical_not">
        <function name="operator()" link="."/>
    </class>

    <class name="std::bit_and" link="cpp/utility/functional/bit_and">
        <function name="operator()" link="."/>
    </class>

    <class name="std::bit_or" link="cpp/utility/functional/bit_or">
        <function name="operator()" link="."/>
    </class>

    <class name="std::bit_not" link="cpp/utility/functional/bit_not">
        <function name="operator()" link="."/>
    </class>

    <class name="std::unary_negate" link="cpp/utility/functional/unary_negate">
        <constructor link="."/>
        <function name="operator()" link="."/>
    </class>

    <class name="std::binary_negate" link="cpp/utility/functional/binary_negate">
        <constructor link="."/>
        <function name="operator()" link="."/>
    </class>

    <function name="std::not1" link="cpp/utility/functional/not1"/>
    <function name="std::not2" link="cpp/utility/functional/not2"/>

    <function name="std::bind" link="cpp/utility/functional/bind"/>
    <class name="std::is_bind_expression" link="cpp/utility/functional/is_bind_expression"/>
    <class name="std::is_placeholder" link="cpp/utility/functional/is_placeholder"/>

    <function name="std::mem_fn" link="cpp/utility/functional/mem_fn"/>
    <class name="std::function" link="cpp/utility/functional/function">
        <constructor/>
        <destructor/>
        <function name="operator="/>
        <function name="swap"/>
        <function name="assign"/>
        <function name="operator bool" link="operator_bool"/>
        <function name="operator()"/>
        <function name="target_type"/>
        <function name="target"/>

        <overload name="std::swap" link="swap"/>
        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>

        <specialization name="std::uses_allocator" link="uses_allocator"/>
    </class>

    <class name="std::bad_function_call" link="cpp/utility/functional/bad_function_call">
        <inherits name="std::exception"/>
        <constructor link="."/>
        <function name="what" link="."/>
    </class>

    <class name="std::placeholders" link="cpp/utility/functional/placeholders"/>

    <class name="std::reference_wrapper" link="cpp/utility/functional/reference_wrapper">
        <constructor/>
        <function name="operator="/>
        <function name="operator T&amp;" link="get"/>
        <function name="get"/>
        <function name="operator()"/>
    </class>

    <function name="std::ref" link="cpp/utility/functional/ref"/>
    <function name="std::cref" link="cpp/utility/functional/ref"/>

    <!-- todo: deprecated content of <functional> -->

    <!--=======================================================================-->
    <!-- cpp/utility -->

    <class name="std::pair" link="cpp/utility/pair">
        <constructor/>
        <function name="operator="/>
        <function name="swap"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>
        <overload name="operator&lt;" link="operator_cmp"/>
        <overload name="operator&lt;=" link="operator_cmp"/>
        <overload name="operator&gt;" link="operator_cmp"/>
        <overload name="operator&gt;=" link="operator_cmp"/>

        <overload name="std::swap" link="swap2"/>
        <overload name="std::get" link="get"/>

        <specialization name="std::tuple_size" link="tuple_size"/>
        <specialization name="std::tuple_element" link="tuple_element"/>
    </class>

    <function name="std::make_pair" link="cpp/utility/pair/make_pair"/>

    <class name="std::tuple" link="cpp/utility/tuple">
        <constructor/>
        <function name="operator="/>
        <function name="swap"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>
        <overload name="operator&lt;" link="operator_cmp"/>
        <overload name="operator&lt;=" link="operator_cmp"/>
        <overload name="operator&gt;" link="operator_cmp"/>
        <overload name="operator&gt;=" link="operator_cmp"/>

        <overload name="std::swap" link="swap2"/>
        <overload name="std::get" link="get"/>

        <specialization name="std::tuple_size" link="tuple_size"/>
        <specialization name="std::tuple_element" link="tuple_element"/>
        <specialization name="std::uses_allocator" link="uses_allocator"/>
    </class>

    <class name="std::piecewise_construct_t" link="cpp/utility/piecewise_construct_t"></class>
    <const name="std::piecewise_construct" link="cpp/utility/piecewise_construct"/>

    <class name="std::integer_sequence" link="cpp/utility/integer_sequence" since="c++14"/>
    <typenedf name="std::index_sequence" link="cpp/utility/integer_sequence" since="c++14"/>
    <typenedf name="std::make_integer_sequence" link="cpp/utility/integer_sequence" since="c++14"/>
    <typenedf name="std::make_index_sequence" link="cpp/utility/integer_sequence" since="c++14"/>
    <typenedf name="std::index_sequence_for" link="cpp/utility/integer_sequence" since="c++14"/>

    <function name="std::make_tuple" link="cpp/utility/tuple/make_tuple"/>
    <function name="std::tie" link="cpp/utility/tuple/tie"/>
    <function name="std::forward_as_tuple" link="cpp/utility/tuple/forward_as_tuple"/>
    <function name="std::tuple_cat" link="cpp/utility/tuple/tuple_cat"/>
    <function name="std::tuple_cat" link="cpp/utility/tuple/tuple_cat"/>
    <const name="std::ignore" link="cpp/utility/tuple/ignore"/>

    <function name="std::forward" link="cpp/utility/forward"/>
    <function name="std::move" link="cpp/utility/move"/>
    <function name="std::move_if_noexcept" link="cpp/utility/move_if_noexcept"/>
    <function name="std::declval" link="cpp/utility/declval"/>

    <function name="std::rel_ops::operator!=" link="cpp/utility/rel_ops/operator_cmp"/>
    <function name="std::rel_ops::operator&gt;" link="cpp/utility/rel_ops/operator_cmp"/>
    <function name="std::rel_ops::operator&lt;=" link="cpp/utility/rel_ops/operator_cmp"/>
    <function name="std::rel_ops::operator&gt;=" link="cpp/utility/rel_ops/operator_cmp"/>

    <class name="std::hash" link="cpp/utility/hash">
        <constructor/>
        <function name="operator()"/>
    </class>

    <class name="std::unary_function" link="cpp/utility/functional/unary_function"/>
    <class name="std::binary_function" link="cpp/utility/functional/binary_function"/>

    <class name="std::experimental::optional" link="cpp/experimental/optional" since="c++14">
        <constructor/>
        <destructor/>
        <function name="operator="/>
        <function name="operator*"/>
        <function name="operator->" link="operator*"/>
        <function name="operator bool" link="operator_bool"/>
        <function name="value"/>
        <function name="value_or"/>
        <function name="swap"/>
        <function name="emplace"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator&lt;" link="operator_cmp"/>
        <overload name="std::swap" link="swap2"/>
        <specialization name="std::hash" link="hash"/>
    </class>

    <function name="std::experimental::make_optional" link="cpp/experimental/optional/make_optional" since="c++14"/>

    <class name="std::bad_optional_access" link="cpp/utility/bad_optional_access" since="c++14">
        <inherits name="std::logic_error"/>
        <constructor link="."/>
    </class>

    <!--=======================================================================-->
    <!-- cpp/string/byte -->

    <function name="std::isalnum" link="cpp/string/byte/isalnum"/>
    <function name="std::isalpha" link="cpp/string/byte/isalpha"/>
    <function name="std::islower" link="cpp/string/byte/islower"/>
    <function name="std::isupper" link="cpp/string/byte/isupper"/>
    <function name="std::isdigit" link="cpp/string/byte/isdigit"/>
    <function name="std::isxdigit" link="cpp/string/byte/isxdigit"/>
    <function name="std::iscntrl" link="cpp/string/byte/iscntrl"/>
    <function name="std::isgraph" link="cpp/string/byte/isgraph"/>
    <function name="std::isspace" link="cpp/string/byte/isspace"/>
    <function name="std::isblank" link="cpp/string/byte/isblank"/>
    <function name="std::isprint" link="cpp/string/byte/isprint"/>
    <function name="std::ispunct" link="cpp/string/byte/ispunct"/>
    <function name="std::tolower" link="cpp/string/byte/tolower"/>
    <function name="std::toupper" link="cpp/string/byte/toupper"/>

    <function name="std::atof" link="cpp/string/byte/atof"/>
    <function name="std::atoi" link="cpp/string/byte/atoi"/>
    <function name="std::atol" link="cpp/string/byte/atoi"/>
    <function name="std::atoll" link="cpp/string/byte/atoi"/>
    <function name="std::strtol" link="cpp/string/byte/strtol"/>
    <function name="std::strtoll" link="cpp/string/byte/strtol"/>
    <function name="std::strtoul" link="cpp/string/byte/strtoul"/>
    <function name="std::strtoull" link="cpp/string/byte/strtoul"/>
    <function name="std::strtof" link="cpp/string/byte/strtof"/>
    <function name="std::strtod" link="cpp/string/byte/strtof"/>
    <function name="std::strtold" link="cpp/string/byte/strtof"/>
    <function name="std::strtoimax" link="cpp/string/byte/strtoimax"/>
    <function name="std::strtoumax" link="cpp/string/byte/strtoimax"/>

    <function name="std::strcpy" link="cpp/string/byte/strcpy"/>
    <function name="std::strncpy" link="cpp/string/byte/strncpy"/>
    <function name="std::strcat" link="cpp/string/byte/strcat"/>
    <function name="std::strncat" link="cpp/string/byte/strncat"/>
    <function name="std::strxfrm" link="cpp/string/byte/strxfrm"/>

    <function name="std::strlen" link="cpp/string/byte/strlen"/>
    <function name="std::strcmp" link="cpp/string/byte/strcmp"/>
    <function name="std::strncmp" link="cpp/string/byte/strncmp"/>
    <function name="std::strcoll" link="cpp/string/byte/strcoll"/>
    <function name="std::strchr" link="cpp/string/byte/strchr"/>
    <function name="std::strrchr" link="cpp/string/byte/strrchr"/>
    <function name="std::strspn" link="cpp/string/byte/strspn"/>
    <function name="std::strcspn" link="cpp/string/byte/strcspn"/>
    <function name="std::strpbrk" link="cpp/string/byte/strpbrk"/>
    <function name="std::strstr" link="cpp/string/byte/strstr"/>
    <function name="std::strtok" link="cpp/string/byte/strtok"/>

    <function name="std::memchr" link="cpp/string/byte/memchr"/>
    <function name="std::memcmp" link="cpp/string/byte/memcmp"/>
    <function name="std::memset" link="cpp/string/byte/memset"/>
    <function name="std::memcpy" link="cpp/string/byte/memcpy"/>
    <function name="std::memmove" link="cpp/string/byte/memmove"/>

    <function name="std::strerror" link="cpp/string/byte/strerror"/>

    <!-- cpp/string/multibyte -->

    <function name="std::mblen" link="cpp/string/multibyte/mblen"/>
    <function name="std::mbtowc" link="cpp/string/multibyte/mbtowc"/>
    <function name="std::wctomb" link="cpp/string/multibyte/wctomb"/>
    <function name="std::mbstowcs" link="cpp/string/multibyte/mbstowcs"/>
    <function name="std::wcstombs" link="cpp/string/multibyte/wcstombs"/>

    <function name="std::mbsinit" link="cpp/string/multibyte/mbsinit"/>
    <function name="std::btowc" link="cpp/string/multibyte/btowc"/>
    <function name="std::wctob" link="cpp/string/multibyte/wctob"/>
    <function name="std::mbrlen" link="cpp/string/multibyte/mbrlen"/>
    <function name="std::mbrtowc" link="cpp/string/multibyte/mbrtowc"/>
    <function name="std::wcrtomb" link="cpp/string/multibyte/wcrtomb"/>
    <function name="std::mbsrtowcs" link="cpp/string/multibyte/mbsrtowcs"/>
    <function name="std::wcstombs" link="cpp/string/multibyte/wcstombs"/>

    <function name="std::mbrtoc16" link="cpp/string/multibyte/mbrtoc16"/>
    <function name="std::c16rtomb" link="cpp/string/multibyte/c16rtomb"/>
    <function name="std::mbrtoc32" link="cpp/string/multibyte/mbrtoc32"/>
    <function name="std::c32rtomb" link="cpp/string/multibyte/c32rtomb"/>

    <class name="std::mbstate_t" link="cpp/string/multibyte/mbstate_t"/>

    <!-- cpp/string/wide -->

    <function name="std::iswalnum" link="cpp/string/wide/iswalnum"/>
    <function name="std::iswalpha" link="cpp/string/wide/iswalpha"/>
    <function name="std::iswlower" link="cpp/string/wide/iswlower"/>
    <function name="std::iswupper" link="cpp/string/wide/iswupper"/>
    <function name="std::iswdigit" link="cpp/string/wide/iswdigit"/>
    <function name="std::iswxdigit" link="cpp/string/wide/iswxdigit"/>
    <function name="std::iswcntrl" link="cpp/string/wide/iswcntrl"/>
    <function name="std::iswgraph" link="cpp/string/wide/iswgraph"/>
    <function name="std::iswspace" link="cpp/string/wide/iswspace"/>
    <function name="std::iswblank" link="cpp/string/wide/iswblank"/>
    <function name="std::iswprint" link="cpp/string/wide/iswprint"/>
    <function name="std::iswpunct" link="cpp/string/wide/iswpunct"/>
    <function name="std::iswctype" link="cpp/string/wide/iswctype"/>
    <function name="std::wctype" link="cpp/string/wide/wctype"/>

    <function name="std::towlower" link="cpp/string/wide/towlower"/>
    <function name="std::towupper" link="cpp/string/wide/towupper"/>
    <function name="std::towctrans" link="cpp/string/wide/towctrans"/>
    <function name="std::wctrans" link="cpp/string/wide/wctrans"/>

    <function name="std::wcstof" link="cpp/string/wide/wcstof"/>
    <function name="std::wcstod" link="cpp/string/wide/wcstof"/>
    <function name="std::wcstold" link="cpp/string/wide/wcstof"/>
    <function name="std::wcstol" link="cpp/string/wide/wcstol"/>
    <function name="std::wcstoll" link="cpp/string/wide/wcstol"/>
    <function name="std::wcstoul" link="cpp/string/wide/wcstoul"/>
    <function name="std::wcstoull" link="cpp/string/wide/wcstoul"/>
    <function name="std::wcstoimax" link="cpp/string/wide/wcstoimax"/>
    <function name="std::wcstoumax" link="cpp/string/wide/wcstoimax"/>

    <function name="std::wcscpy" link="cpp/string/wide/wcscpy"/>
    <function name="std::wcsncpy" link="cpp/string/wide/wcsncpy"/>
    <function name="std::wcscat" link="cpp/string/wide/wcscat"/>
    <function name="std::wcsncat" link="cpp/string/wide/wcsncat"/>
    <function name="std::wcsxfrm" link="cpp/string/wide/wcsxfrm"/>

    <function name="std::wcslen" link="cpp/string/wide/wcslen"/>
    <function name="std::wcscmp" link="cpp/string/wide/wcscmp"/>
    <function name="std::wcsncmp" link="cpp/string/wide/wcsncmp"/>
    <function name="std::wcscoll" link="cpp/string/wide/wcscoll"/>
    <function name="std::wcschr" link="cpp/string/wide/wcschr"/>
    <function name="std::wcsrchr" link="cpp/string/wide/wcsrchr"/>
    <function name="std::wcsspn" link="cpp/string/wide/wcsspn"/>
    <function name="std::wcscspn" link="cpp/string/wide/wcscspn"/>
    <function name="std::wcspbrk" link="cpp/string/wide/wcspbrk"/>
    <function name="std::wcsstr" link="cpp/string/wide/wcsstr"/>
    <function name="std::wcstok" link="cpp/string/wide/wcstok"/>

    <function name="std::wmemchr" link="cpp/string/wide/wmemchr"/>
    <function name="std::wmemcmp" link="cpp/string/wide/wmemcmp"/>
    <function name="std::wmemset" link="cpp/string/wide/wmemset"/>
    <function name="std::wmemcpy" link="cpp/string/wide/wmemcpy"/>
    <function name="std::wmemmove" link="cpp/string/wide/wmemmove"/>

    <!-- cpp/string/basic_string -->

    <class name="std::basic_string" link="cpp/string/basic_string">
        <constructor/>
        <function name="assign"/>
        <function name="operator="/>
        <function name="get_allocator"/>

        <function name="at"/>
        <function name="operator[]" link="operator_at"/>
        <function name="front"/>
        <function name="back"/>
        <function name="data"/>
        <function name="c_str"/>

        <function name="begin"/>
        <function name="cbegin" link="begin"/>
        <function name="end"/>
        <function name="cend" link="end"/>
        <function name="rbegin"/>
        <function name="crbegin" link="rbegin"/>
        <function name="rend"/>
        <function name="crend" link="rend"/>

        <function name="empty"/>
        <function name="size"/>
        <function name="length" link="size"/>
        <function name="max_size"/>
        <function name="reserve"/>
        <function name="capacity"/>
        <function name="shrink_to_fit"/>

        <function name="clear"/>
        <function name="insert"/>
        <function name="erase"/>
        <function name="push_back"/>
        <function name="pop_back"/>
        <function name="append"/>
        <function name="compare"/>
        <function name="replace"/>
        <function name="substr"/>
        <function name="copy"/>
        <function name="resize"/>
        <function name="swap"/>

        <function name="find"/>
        <function name="rfind"/>
        <function name="find_first_of"/>
        <function name="find_first_not_of"/>
        <function name="find_last_of"/>
        <function name="find_last_not_of"/>

        <const name="npos"/>

        <overload name="operator+"/>
        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>
        <overload name="operator&lt;" link="operator_cmp"/>
        <overload name="operator&lt;=" link="operator_cmp"/>
        <overload name="operator&gt;" link="operator_cmp"/>
        <overload name="operator&gt;=" link="operator_cmp"/>

        <overload name="std::swap" link="swap2"/>

        <overload name="operator&lt;&lt;" link="operator_ltltgtgt"/>
        <overload name="operator&gt;&gt;" link="operator_ltltgtgt"/>

        <specialization name="std::hash" link="hash"/>
    </class>

    <typedef name="std::string" alias="std::basic_string"/>
    <typedef name="std::wstring" alias="std::basic_string"/>
    <typedef name="std::u16string" alias="std::basic_string"/>
    <typedef name="std::u32string" alias="std::basic_string"/>

    <!-- cpp/string -->

    <function name="std::getline" link="cpp/string/basic_string/getline"/>
    <function name="std::stoi" link="cpp/string/basic_string/stol"/>
    <function name="std::stol" link="cpp/string/basic_string/stol"/>
    <function name="std::stoll" link="cpp/string/basic_string/stol"/>
    <function name="std::stoul" link="cpp/string/basic_string/stoul"/>
    <function name="std::stoull" link="cpp/string/basic_string/stoul"/>
    <function name="std::stof" link="cpp/string/basic_string/stof"/>
    <function name="std::stod" link="cpp/string/basic_string/stof"/>
    <function name="std::stold" link="cpp/string/basic_string/stof"/>
    <function name="std::to_string" link="cpp/string/basic_string/to_string"/>
    <function name="std::to_wstring" link="cpp/string/basic_string/to_wstring"/>

    <class name="std::char_traits" link="cpp/string/char_traits">
        <function name="assign"/>
        <function name="eq" link="cmp"/>
        <function name="lt" link="cmp"/>
        <function name="move"/>
        <function name="copy"/>
        <function name="compare"/>
        <function name="length"/>
        <function name="find"/>
        <function name="to_char_type"/>
        <function name="to_int_type"/>
        <function name="eq_int_type"/>
        <function name="eof"/>
        <function name="not_eof"/>
    </class>

    <!-- cpp/container -->

    <class name="std::array" link="cpp/container/array">

        <function name="at"/>
        <function name="operator[]" link="operator_at"/>
        <function name="front"/>
        <function name="back"/>
        <function name="data"/>

        <function name="begin"/>
        <function name="cbegin" link="begin"/>
        <function name="end"/>
        <function name="cend" link="end"/>
        <function name="rbegin"/>
        <function name="crbegin" link="rbegin"/>
        <function name="rend"/>
        <function name="crend" link="rend"/>

        <function name="empty"/>
        <function name="size"/>
        <function name="max_size"/>

        <function name="fill"/>
        <function name="swap"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>
        <overload name="operator&lt;" link="operator_cmp"/>
        <overload name="operator&lt;=" link="operator_cmp"/>
        <overload name="operator&gt;" link="operator_cmp"/>
        <overload name="operator&gt;=" link="operator_cmp"/>

        <overload name="std::swap" link="swap2"/>
        <overload name="std::get" link="get"/>

        <specialization name="std::tuple_size" link="tuple_size"/>
        <specialization name="std::tuple_element" link="tuple_element"/>
    </class>

    <class name="std::dynarray" link="cpp/container/dynarray" since="c++14">
        <constructor/>
        <destructor/>

        <function name="at"/>
        <function name="operator[]" link="operator_at"/>
        <function name="front"/>
        <function name="back"/>
        <function name="data"/>

        <function name="begin"/>
        <function name="cbegin" link="begin"/>
        <function name="end"/>
        <function name="cend" link="end"/>
        <function name="rbegin"/>
        <function name="crbegin" link="rbegin"/>
        <function name="rend"/>
        <function name="crend" link="rend"/>

        <function name="empty"/>
        <function name="size"/>
        <function name="max_size"/>

        <function name="fill"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>
        <overload name="operator&lt;" link="operator_cmp"/>
        <overload name="operator&lt;=" link="operator_cmp"/>
        <overload name="operator&gt;" link="operator_cmp"/>
        <overload name="operator&gt;=" link="operator_cmp"/>

        <specialization name="std::uses_allocator" link="uses_allocator"/>
    </class>

    <class name="std::vector" link="cpp/container/vector">
        <constructor/>
        <destructor/>
        <function name="operator="/>
        <function name="assign"/>
        <function name="get_allocator"/>

        <function name="at"/>
        <function name="operator[]" link="operator_at"/>
        <function name="front"/>
        <function name="back"/>
        <function name="data"/>

        <function name="begin"/>
        <function name="cbegin" link="begin"/>
        <function name="end"/>
        <function name="cend" link="end"/>
        <function name="rbegin"/>
        <function name="crbegin" link="rbegin"/>
        <function name="rend"/>
        <function name="crend" link="rend"/>

        <function name="empty"/>
        <function name="size"/>
        <function name="max_size"/>
        <function name="reserve"/>
        <function name="capacity"/>
        <function name="shrink_to_fit"/>

        <function name="clear"/>
        <function name="insert"/>
        <function name="emplace"/>
        <function name="erase"/>
        <function name="push_back"/>
        <function name="emplace_back"/>
        <function name="pop_back"/>
        <function name="resize"/>
        <function name="swap"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>
        <overload name="operator&lt;" link="operator_cmp"/>
        <overload name="operator&lt;=" link="operator_cmp"/>
        <overload name="operator&gt;" link="operator_cmp"/>
        <overload name="operator&gt;=" link="operator_cmp"/>

        <overload name="std::swap" link="swap2"/>
    </class>

    <class name="std::deque" link="cpp/container/deque">
        <constructor/>
        <destructor/>
        <function name="operator="/>
        <function name="assign"/>
        <function name="get_allocator"/>

        <function name="at"/>
        <function name="operator[]" link="operator_at"/>
        <function name="front"/>
        <function name="back"/>

        <function name="begin"/>
        <function name="cbegin" link="begin"/>
        <function name="end"/>
        <function name="cend" link="end"/>
        <function name="rbegin"/>
        <function name="crbegin" link="rbegin"/>
        <function name="rend"/>
        <function name="crend" link="rend"/>

        <function name="empty"/>
        <function name="size"/>
        <function name="max_size"/>
        <function name="shrink_to_fit"/>

        <function name="clear"/>
        <function name="insert"/>
        <function name="emplace"/>
        <function name="erase"/>
        <function name="push_back"/>
        <function name="emplace_back"/>
        <function name="pop_back"/>
        <function name="push_front"/>
        <function name="emplace_front"/>
        <function name="pop_front"/>
        <function name="resize"/>
        <function name="swap"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>
        <overload name="operator&lt;" link="operator_cmp"/>
        <overload name="operator&lt;=" link="operator_cmp"/>
        <overload name="operator&gt;" link="operator_cmp"/>
        <overload name="operator&gt;=" link="operator_cmp"/>

        <overload name="std::swap" link="swap2"/>
    </class>

    <class name="std::forward_list" link="cpp/container/forward_list">
        <constructor/>
        <destructor/>
        <function name="operator="/>
        <function name="assign"/>
        <function name="get_allocator"/>

        <function name="front"/>

        <function name="before_begin"/>
        <function name="cbefore_begin" link="before_begin"/>
        <function name="begin"/>
        <function name="cbegin" link="begin"/>
        <function name="end"/>
        <function name="cend" link="end"/>

        <function name="empty"/>
        <function name="max_size"/>

        <function name="clear"/>
        <function name="insert_after"/>
        <function name="emplace_after"/>
        <function name="erase_after"/>
        <function name="push_front"/>
        <function name="emplace_front"/>
        <function name="pop_front"/>
        <function name="resize"/>
        <function name="swap"/>

        <function name="merge"/>
        <function name="splice_after"/>
        <function name="remove"/>
        <function name="remove_if" link="remove"/>
        <function name="reverse"/>
        <function name="unique"/>
        <function name="sort"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>
        <overload name="operator&lt;" link="operator_cmp"/>
        <overload name="operator&lt;=" link="operator_cmp"/>
        <overload name="operator&gt;" link="operator_cmp"/>
        <overload name="operator&gt;=" link="operator_cmp"/>

        <overload name="std::swap" link="swap2"/>
    </class>

    <class name="std::list" link="cpp/container/list">
        <constructor/>
        <destructor/>
        <function name="operator="/>
        <function name="assign"/>
        <function name="get_allocator"/>

        <function name="front"/>
        <function name="back"/>

        <function name="begin"/>
        <function name="cbegin" link="begin"/>
        <function name="end"/>
        <function name="cend" link="end"/>
        <function name="rbegin"/>
        <function name="crbegin" link="rbegin"/>
        <function name="rend"/>
        <function name="crend" link="rend"/>

        <function name="empty"/>
        <function name="size"/>
        <function name="max_size"/>

        <function name="clear"/>
        <function name="insert"/>
        <function name="emplace"/>
        <function name="erase"/>
        <function name="push_back"/>
        <function name="emplace_back"/>
        <function name="pop_back"/>
        <function name="push_front"/>
        <function name="emplace_front"/>
        <function name="pop_front"/>
        <function name="resize"/>
        <function name="swap"/>

        <function name="merge"/>
        <function name="splice"/>
        <function name="remove"/>
        <function name="remove_if" link="remove"/>
        <function name="reverse"/>
        <function name="unique"/>
        <function name="sort"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>
        <overload name="operator&lt;" link="operator_cmp"/>
        <overload name="operator&lt;=" link="operator_cmp"/>
        <overload name="operator&gt;" link="operator_cmp"/>
        <overload name="operator&gt;=" link="operator_cmp"/>

        <overload name="std::swap" link="swap2"/>
    </class>

    <class name="std::set" link="cpp/container/set">
        <constructor/>
        <destructor/>
        <function name="operator="/>
        <function name="get_allocator"/>

        <function name="begin"/>
        <function name="cbegin" link="begin"/>
        <function name="end"/>
        <function name="cend" link="end"/>
        <function name="rbegin"/>
        <function name="crbegin" link="rbegin"/>
        <function name="rend"/>
        <function name="crend" link="rend"/>

        <function name="empty"/>
        <function name="size"/>
        <function name="max_size"/>

        <function name="clear"/>
        <function name="insert"/>
        <function name="emplace"/>
        <function name="emplace_hint"/>
        <function name="erase"/>
        <function name="swap"/>

        <function name="count"/>
        <function name="find"/>
        <function name="equal_range"/>
        <function name="lower_bound"/>
        <function name="upper_bound"/>

        <function name="key_comp"/>
        <function name="value_comp"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>
        <overload name="operator&lt;" link="operator_cmp"/>
        <overload name="operator&lt;=" link="operator_cmp"/>
        <overload name="operator&gt;" link="operator_cmp"/>
        <overload name="operator&gt;=" link="operator_cmp"/>

        <overload name="std::swap" link="swap2"/>
    </class>

    <class name="std::multiset" link="cpp/container/multiset">
        <constructor/>
        <destructor/>
        <function name="operator="/>
        <function name="get_allocator"/>

        <function name="begin"/>
        <function name="cbegin" link="begin"/>
        <function name="end"/>
        <function name="cend" link="end"/>
        <function name="rbegin"/>
        <function name="crbegin" link="rbegin"/>
        <function name="rend"/>
        <function name="crend" link="rend"/>

        <function name="empty"/>
        <function name="size"/>
        <function name="max_size"/>

        <function name="clear"/>
        <function name="insert"/>
        <function name="emplace"/>
        <function name="emplace_hint"/>
        <function name="erase"/>
        <function name="swap"/>

        <function name="count"/>
        <function name="find"/>
        <function name="equal_range"/>
        <function name="lower_bound"/>
        <function name="upper_bound"/>

        <function name="key_comp"/>
        <function name="value_comp"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>
        <overload name="operator&lt;" link="operator_cmp"/>
        <overload name="operator&lt;=" link="operator_cmp"/>
        <overload name="operator&gt;" link="operator_cmp"/>
        <overload name="operator&gt;=" link="operator_cmp"/>

        <overload name="std::swap" link="swap2"/>
    </class>

    <class name="std::map" link="cpp/container/map">
        <class name="value_compare"/>

        <constructor/>
        <destructor/>
        <function name="operator="/>
        <function name="get_allocator"/>

        <function name="at"/>
        <function name="operator[]" link="operator_at"/>

        <function name="begin"/>
        <function name="cbegin" link="begin"/>
        <function name="end"/>
        <function name="cend" link="end"/>
        <function name="rbegin"/>
        <function name="crbegin" link="rbegin"/>
        <function name="rend"/>
        <function name="crend" link="rend"/>

        <function name="empty"/>
        <function name="size"/>
        <function name="max_size"/>

        <function name="clear"/>
        <function name="insert"/>
        <function name="emplace"/>
        <function name="emplace_hint"/>
        <function name="erase"/>
        <function name="swap"/>

        <function name="count"/>
        <function name="find"/>
        <function name="equal_range"/>
        <function name="lower_bound"/>
        <function name="upper_bound"/>

        <function name="key_comp"/>
        <function name="value_comp"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>
        <overload name="operator&lt;" link="operator_cmp"/>
        <overload name="operator&lt;=" link="operator_cmp"/>
        <overload name="operator&gt;" link="operator_cmp"/>
        <overload name="operator&gt;=" link="operator_cmp"/>

        <overload name="std::swap" link="swap2"/>
    </class>

    <class name="std::multimap" link="cpp/container/multimap">
        <class name="value_compare"/>

        <constructor/>
        <destructor/>

        <function name="operator="/>
        <function name="get_allocator"/>

        <function name="begin"/>
        <function name="cbegin" link="begin"/>
        <function name="end"/>
        <function name="cend" link="end"/>
        <function name="rbegin"/>
        <function name="crbegin" link="rbegin"/>
        <function name="rend"/>
        <function name="crend" link="rend"/>

        <function name="empty"/>
        <function name="size"/>
        <function name="max_size"/>

        <function name="clear"/>
        <function name="insert"/>
        <function name="emplace"/>
        <function name="emplace_hint"/>
        <function name="erase"/>
        <function name="swap"/>

        <function name="count"/>
        <function name="find"/>
        <function name="equal_range"/>
        <function name="lower_bound"/>
        <function name="upper_bound"/>

        <function name="key_comp"/>
        <function name="value_comp"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>
        <overload name="operator&lt;" link="operator_cmp"/>
        <overload name="operator&lt;=" link="operator_cmp"/>
        <overload name="operator&gt;" link="operator_cmp"/>
        <overload name="operator&gt;=" link="operator_cmp"/>

        <overload name="std::swap" link="swap2"/>
    </class>

    <class name="std::unordered_set" link="cpp/container/unordered_set">
        <constructor/>
        <destructor/>
        <function name="operator="/>
        <function name="get_allocator"/>

        <function name="begin"/>
        <function name="cbegin" link="begin"/>
        <function name="end"/>
        <function name="cend" link="end"/>

        <function name="empty"/>
        <function name="size"/>
        <function name="max_size"/>

        <function name="clear"/>
        <function name="insert"/>
        <function name="emplace"/>
        <function name="emplace_hint"/>
        <function name="erase"/>
        <function name="swap"/>

        <function name="count"/>
        <function name="find"/>
        <function name="equal_range"/>

        <function name="begin(int)" link="begin2"/>
        <function name="cbegin(int)" link="begin2"/>
        <function name="end(int)" link="end2"/>
        <function name="cend(int)" link="end2"/>

        <function name="bucket_count"/>
        <function name="max_bucket_count"/>
        <function name="bucket_size"/>
        <function name="bucket"/>

        <function name="load_factor"/>
        <function name="max_load_factor"/>
        <function name="reserve"/>
        <function name="rehash"/>

        <function name="hash_function"/>
        <function name="key_eq"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>

        <overload name="std::swap" link="swap2"/>
    </class>

    <class name="std::unordered_multiset" link="cpp/container/unordered_multiset">
        <constructor/>
        <destructor/>
        <function name="operator="/>
        <function name="get_allocator"/>

        <function name="begin"/>
        <function name="cbegin" link="begin"/>
        <function name="end"/>
        <function name="cend" link="end"/>

        <function name="empty"/>
        <function name="size"/>
        <function name="max_size"/>

        <function name="clear"/>
        <function name="insert"/>
        <function name="emplace"/>
        <function name="emplace_hint"/>
        <function name="erase"/>
        <function name="swap"/>

        <function name="count"/>
        <function name="find"/>
        <function name="equal_range"/>

        <function name="begin(int)" link="begin2"/>
        <function name="cbegin(int)" link="begin2"/>
        <function name="end(int)" link="end2"/>
        <function name="cend(int)" link="end2"/>

        <function name="bucket_count"/>
        <function name="max_bucket_count"/>
        <function name="bucket_size"/>
        <function name="bucket"/>

        <function name="load_factor"/>
        <function name="max_load_factor"/>
        <function name="reserve"/>
        <function name="rehash"/>

        <function name="hash_function"/>
        <function name="key_eq"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>

        <overload name="std::swap" link="swap2"/>
    </class>

    <class name="std::unordered_map" link="cpp/container/unordered_map">
        <constructor/>
        <destructor/>
        <function name="operator="/>
        <function name="get_allocator"/>

        <function name="begin"/>
        <function name="cbegin" link="begin"/>
        <function name="end"/>
        <function name="cend" link="end"/>

        <function name="empty"/>
        <function name="size"/>
        <function name="max_size"/>

        <function name="clear"/>
        <function name="insert"/>
        <function name="emplace"/>
        <function name="emplace_hint"/>
        <function name="erase"/>
        <function name="swap"/>

        <function name="at"/>
        <function name="operator[]" link="operator_at"/>
        <function name="count"/>
        <function name="find"/>
        <function name="equal_range"/>

        <function name="begin(int)" link="begin2"/>
        <function name="cbegin(int)" link="begin2"/>
        <function name="end(int)" link="end2"/>
        <function name="cend(int)" link="end2"/>

        <function name="bucket_count"/>
        <function name="max_bucket_count"/>
        <function name="bucket_size"/>
        <function name="bucket"/>

        <function name="load_factor"/>
        <function name="max_load_factor"/>
        <function name="reserve"/>
        <function name="rehash"/>

        <function name="hash_function"/>
        <function name="key_eq"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>

        <overload name="std::swap" link="swap2"/>
    </class>

    <class name="std::unordered_multimap" link="cpp/container/unordered_multimap">
        <constructor/>
        <destructor/>
        <function name="operator="/>
        <function name="get_allocator"/>

        <function name="begin"/>
        <function name="cbegin" link="begin"/>
        <function name="end"/>
        <function name="cend" link="end"/>

        <function name="empty"/>
        <function name="size"/>
        <function name="max_size"/>

        <function name="clear"/>
        <function name="insert"/>
        <function name="emplace"/>
        <function name="emplace_hint"/>
        <function name="erase"/>
        <function name="swap"/>

        <function name="count"/>
        <function name="find"/>
        <function name="equal_range"/>

        <function name="begin(int)" link="begin2"/>
        <function name="cbegin(int)" link="begin2"/>
        <function name="end(int)" link="end2"/>
        <function name="cend(int)" link="end2"/>

        <function name="bucket_count"/>
        <function name="max_bucket_count"/>
        <function name="bucket_size"/>
        <function name="bucket"/>

        <function name="load_factor"/>
        <function name="max_load_factor"/>
        <function name="reserve"/>
        <function name="rehash"/>

        <function name="hash_function"/>
        <function name="key_eq"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>

        <overload name="std::swap" link="swap2"/>
    </class>

    <class name="std::stack" link="cpp/container/stack">
        <constructor/>
        <destructor/>
        <function name="operator="/>

        <function name="top"/>

        <function name="empty"/>
        <function name="size"/>

        <function name="push"/>
        <function name="emplace"/>
        <function name="pop"/>
        <function name="swap"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>
        <overload name="operator&lt;" link="operator_cmp"/>
        <overload name="operator&lt;=" link="operator_cmp"/>
        <overload name="operator&gt;" link="operator_cmp"/>
        <overload name="operator&gt;=" link="operator_cmp"/>

        <overload name="std::swap" link="swap2"/>
        <specialization name="std::uses_allocator" link="uses_allocator"/>
    </class>

    <class name="std::queue" link="cpp/container/queue">
        <constructor/>
        <destructor/>
        <function name="operator="/>

        <function name="front"/>
        <function name="back"/>

        <function name="empty"/>
        <function name="size"/>

        <function name="push"/>
        <function name="emplace"/>
        <function name="pop"/>
        <function name="swap"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>
        <overload name="operator&lt;" link="operator_cmp"/>
        <overload name="operator&lt;=" link="operator_cmp"/>
        <overload name="operator&gt;" link="operator_cmp"/>
        <overload name="operator&gt;=" link="operator_cmp"/>

        <overload name="std::swap" link="swap2"/>
        <specialization name="std::uses_allocator" link="uses_allocator"/>
    </class>

    <class name="std::priority_queue" link="cpp/container/priority_queue">
        <constructor/>
        <destructor/>
        <function name="operator="/>

        <function name="top"/>

        <function name="empty"/>
        <function name="size"/>

        <function name="push"/>
        <function name="emplace"/>
        <function name="pop"/>
        <function name="swap"/>

        <overload name="std::swap" link="swap2"/>
        <specialization name="std::uses_allocator" link="uses_allocator"/>
    </class>

    <!-- cpp/numeric/math -->

    <function name="std::abs(int)" link="cpp/numeric/math/abs"/>
    <function name="std::labs" link="cpp/numeric/math/abs"/>
    <function name="std::llabs" link="cpp/numeric/math/abs"/>
    <function name="std::abs(float)" link="cpp/numeric/math/fabs"/>
    <function name="std::fabs" link="cpp/numeric/math/fabs"/>
    <function name="std::div" link="cpp/numeric/math/div"/>
    <function name="std::ldiv" link="cpp/numeric/math/div"/>
    <function name="std::fmod" link="cpp/numeric/math/fmod"/>
    <function name="std::remainder" link="cpp/numeric/math/remainder"/>
    <function name="std::remquo" link="cpp/numeric/math/remquo"/>
    <function name="std::fma" link="cpp/numeric/math/fma"/>
    <function name="std::fmax" link="cpp/numeric/math/fmax"/>
    <function name="std::fmin" link="cpp/numeric/math/fmin"/>
    <function name="std::fdim" link="cpp/numeric/math/fdim"/>
    <function name="std::nan" link="cpp/numeric/math/nan"/>
    <function name="std::nanf" link="cpp/numeric/math/nan"/>
    <function name="std::nanl" link="cpp/numeric/math/nan"/>

    <function name="std::exp" link="cpp/numeric/math/exp"/>
    <function name="std::exp2" link="cpp/numeric/math/exp2"/>
    <function name="std::expm1" link="cpp/numeric/math/expm1"/>
    <function name="std::log" link="cpp/numeric/math/log"/>
    <function name="std::log10" link="cpp/numeric/math/log10"/>
    <function name="std::log1p" link="cpp/numeric/math/log1p"/>
    <function name="std::ilogb" link="cpp/numeric/math/ilogb"/>
    <function name="std::logb" link="cpp/numeric/math/logb"/>

    <function name="std::sqrt" link="cpp/numeric/math/sqrt"/>
    <function name="std::cbrt" link="cpp/numeric/math/cbrt"/>
    <function name="std::hypot" link="cpp/numeric/math/hypot"/>
    <function name="std::pow" link="cpp/numeric/math/pow"/>

    <function name="std::sin" link="cpp/numeric/math/sin"/>
    <function name="std::cos" link="cpp/numeric/math/cos"/>
    <function name="std::tan" link="cpp/numeric/math/tan"/>
    <function name="std::asin" link="cpp/numeric/math/asin"/>
    <function name="std::acos" link="cpp/numeric/math/acos"/>
    <function name="std::atan" link="cpp/numeric/math/atan"/>
    <function name="std::atan2" link="cpp/numeric/math/atan2"/>
    <function name="std::sinh" link="cpp/numeric/math/sinh"/>
    <function name="std::cosh" link="cpp/numeric/math/cosh"/>
    <function name="std::tanh" link="cpp/numeric/math/tanh"/>
    <function name="std::asinh" link="cpp/numeric/math/asinh"/>
    <function name="std::acosh" link="cpp/numeric/math/acosh"/>
    <function name="std::atanh" link="cpp/numeric/math/atanh"/>

    <function name="std::erf" link="cpp/numeric/math/erf"/>
    <function name="std::erfc" link="cpp/numeric/math/erfc"/>
    <function name="std::lgamma" link="cpp/numeric/math/lgamma"/>
    <function name="std::tgamma" link="cpp/numeric/math/tgamma"/>

    <function name="std::ceil" link="cpp/numeric/math/ceil"/>
    <function name="std::floor" link="cpp/numeric/math/floor"/>
    <function name="std::trunc" link="cpp/numeric/math/trunc"/>
    <function name="std::round" link="cpp/numeric/math/round"/>
    <function name="std::lround" link="cpp/numeric/math/round"/>
    <function name="std::llround" link="cpp/numeric/math/round"/>
    <function name="std::nearbyint" link="cpp/numeric/math/nearbyint"/>
    <function name="std::rint" link="cpp/numeric/math/rint"/>
    <function name="std::lrint" link="cpp/numeric/math/rint"/>
    <function name="std::llrint" link="cpp/numeric/math/rint"/>

    <function name="std::frexp" link="cpp/numeric/math/frexp"/>
    <function name="std::ldexp" link="cpp/numeric/math/ldexp"/>
    <function name="std::modf" link="cpp/numeric/math/modf"/>
    <function name="std::scalbn" link="cpp/numeric/math/scalbn"/>
    <function name="std::scalbln" link="cpp/numeric/math/scalbn"/>
    <function name="std::nextafter" link="cpp/numeric/math/nextafter"/>
    <function name="std::nexttoward" link="cpp/numeric/math/nextafter"/>
    <function name="std::copysign" link="cpp/numeric/math/copysign"/>

    <function name="std::fpclassify" link="cpp/numeric/math/fpclassify"/>
    <function name="std::isfinite" link="cpp/numeric/math/isfinite"/>
    <function name="std::isinf" link="cpp/numeric/math/isinf"/>
    <function name="std::isnan" link="cpp/numeric/math/isnan"/>
    <function name="std::isnormal" link="cpp/numeric/math/isnormal"/>
    <function name="std::signbit" link="cpp/numeric/math/signbit"/>

    <const name="HUGE_VAL" link="cpp/numeric/math/HUGE_VAL"/>
    <const name="HUGE_VALF" link="cpp/numeric/math/HUGE_VAL"/>
    <const name="HUGE_VALL" link="cpp/numeric/math/HUGE_VAL"/>

    <const name="INFINITY" link="cpp/numeric/math/INFINITY"/>
    <const name="NAN" link="cpp/numeric/math/NAN"/>

    <const name="math_errhandling" link="cpp/numeric/math/math_errhandling"/>
    <const name="MATH_ERRNO" link="cpp/numeric/math/math_errhandling"/>
    <const name="MATH_ERREXCEPT" link="cpp/numeric/math/math_errhandling"/>

    <const name="FP_INFINITE" link="cpp/numeric/math/FP_categories"/>
    <const name="FP_NAN" link="cpp/numeric/math/FP_categories"/>
    <const name="FP_NORMAL" link="cpp/numeric/math/FP_categories"/>
    <const name="FP_SUBNORMAL" link="cpp/numeric/math/FP_categories"/>
    <const name="FP_ZERO" link="cpp/numeric/math/FP_categories"/>

    <!-- cpp/numeric/fenv -->

    <function name="std::feclearexcept" link="cpp/numeric/fenv/feclearexcept"/>
    <function name="std::fetestexcept" link="cpp/numeric/fenv/fetestexcept"/>
    <function name="std::feraiseexcept" link="cpp/numeric/fenv/feraiseexcept"/>
    <function name="std::fegetexceptflag" link="cpp/numeric/fenv/feexceptflag"/>
    <function name="std::fesetexceptflag" link="cpp/numeric/fenv/feexceptflag"/>
    <function name="std::fegetround" link="cpp/numeric/fenv/feround"/>
    <function name="std::fesetround" link="cpp/numeric/fenv/feround"/>
    <function name="std::fegetenv" link="cpp/numeric/fenv/feenv"/>
    <function name="std::fesetenv" link="cpp/numeric/fenv/feenv"/>
    <function name="std::feholdexcept" link="cpp/numeric/fenv/feholdexcept"/>
    <function name="std::feupdateenv" link="cpp/numeric/fenv/feupdateenv"/>

    <const name="FE_ALL_EXCEPT" link="cpp/numeric/fenv/FE_exceptions"/>
    <const name="FE_DIVBYZERO" link="cpp/numeric/fenv/FE_exceptions"/>
    <const name="FE_INEXACT" link="cpp/numeric/fenv/FE_exceptions"/>
    <const name="FE_INVALID" link="cpp/numeric/fenv/FE_exceptions"/>
    <const name="FE_OVERFLOW" link="cpp/numeric/fenv/FE_exceptions"/>
    <const name="FE_UNHERFLOW" link="cpp/numeric/fenv/FE_exceptions"/>

    <const name="FE_DOWNWARD" link="cpp/numeric/fenv/FE_round"/>
    <const name="FE_TONEAREST" link="cpp/numeric/fenv/FE_round"/>
    <const name="FE_TOWARDZERO" link="cpp/numeric/fenv/FE_round"/>
    <const name="FE_UPWARD" link="cpp/numeric/fenv/FE_round"/>

    <const name="FE_DFL_ENV" link="cpp/numeric/fenv/FE_DFL_ENV"/>

    <!-- cpp/numeric/complex -->

    <class name="std::complex" link="cpp/numeric/complex">
        <constructor/>
        <function name="operator="/>
        <function name="real"/>
        <function name="imag"/>
        <function name="operator+=" link="operator_arith"/>
        <function name="operator-=" link="operator_arith"/>
        <function name="operator*=" link="operator_arith"/>
        <function name="operator/=" link="operator_arith"/>

        <overload name="operator+" link="operator_arith2"/>
        <overload name="operator-" link="operator_arith2"/>

        <overload name="operator+" link="operator_arith3"/>
        <overload name="operator-" link="operator_arith3"/>
        <overload name="operator*" link="operator_arith3"/>
        <overload name="operator/" link="operator_arith3"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>

        <overload name="operator&lt;&lt;" link="operator_ltltgtgt"/>
        <overload name="operator&gt;&gt;" link="operator_ltltgtgt"/>

        <overload name="std::real" link="real"/>
        <overload name="std::imag" link="imag"/>
        <overload name="std::abs" link="abs"/>
        <overload name="std::arg" link="arg"/>
        <overload name="std::norm" link="norm"/>
        <overload name="std::conj" link="conj"/>
        <overload name="std::proj" link="proj"/>
        <overload name="std::polar" link="polar"/>

        <overload name="std::exp" link="exp"/>
        <overload name="std::log" link="log"/>
        <overload name="std::log10" link="log10"/>

        <overload name="std::pow" link="pow"/>
        <overload name="std::sqrt" link="sqrt"/>

        <overload name="std::sin" link="sin"/>
        <overload name="std::cos" link="cos"/>
        <overload name="std::tan" link="tan"/>
        <overload name="std::asin" link="asin"/>
        <overload name="std::acos" link="acos"/>
        <overload name="std::atan" link="atan"/>

        <overload name="std::sinh" link="sinh"/>
        <overload name="std::cosh" link="cosh"/>
        <overload name="std::tanh" link="tanh"/>
        <overload name="std::asinh" link="asinh"/>
        <overload name="std::acosh" link="acosh"/>
        <overload name="std::atanh" link="atanh"/>
    </class>

    <!-- cpp/numeric/valarray -->

    <class name="std::valarray" link="cpp/numeric/valarray">
        <!-- todo -->
    </class>

    <!-- cpp/numeric/random -->

    <class name="std::linear_congruential_engine" link="cpp/numeric/random/linear_congruential_engine">
        <constructor/>
        <function name="seed"/>
        <function name="operator()"/>
        <function name="discard"/>
        <function name="min"/>
        <function name="max"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>
        <overload name="operator&lt;&lt;" link="operator_ltltgtgt"/>
        <overload name="operator&gt;&gt;" link="operator_ltltgtgt"/>

        <!--todo mem objects-->
    </class>

    <class name="std::mersenne_twister_engine" link="cpp/numeric/random/mersenne_twister_engine">
        <constructor/>
        <function name="seed"/>
        <function name="operator()"/>
        <function name="discard"/>
        <function name="min"/>
        <function name="max"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>
        <overload name="operator&lt;&lt;" link="operator_ltltgtgt"/>
        <overload name="operator&gt;&gt;" link="operator_ltltgtgt"/>

        <!--todo mem objects-->
    </class>

    <class name="std::subtract_with_carry_engine" link="cpp/numeric/random/subtract_with_carry_engine">
        <constructor/>
        <function name="seed"/>
        <function name="operator()"/>
        <function name="discard"/>
        <function name="min"/>
        <function name="max"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>
        <overload name="operator&lt;&lt;" link="operator_ltltgtgt"/>
        <overload name="operator&gt;&gt;" link="operator_ltltgtgt"/>

        <!--todo mem objects-->
    </class>

    <class name="std::discard_block_engine" link="cpp/numeric/random/discard_block_engine">
        <constructor/>
        <function name="seed"/>
        <function name="base"/>
        <function name="operator()"/>
        <function name="discard"/>
        <function name="min"/>
        <function name="max"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>
        <overload name="operator&lt;&lt;" link="operator_ltltgtgt"/>
        <overload name="operator&gt;&gt;" link="operator_ltltgtgt"/>

        <!--todo mem objects-->
    </class>

    <class name="std::independent_bits_engine" link="cpp/numeric/random/independent_bits_engine">
        <constructor/>
        <function name="seed"/>
        <function name="base"/>
        <function name="operator()"/>
        <function name="discard"/>
        <function name="min"/>
        <function name="max"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>
        <overload name="operator&lt;&lt;" link="operator_ltltgtgt"/>
        <overload name="operator&gt;&gt;" link="operator_ltltgtgt"/>

        <!--todo mem objects-->
    </class>

    <class name="std::shuffle_order_engine" link="cpp/numeric/random/shuffle_order_engine">
        <constructor/>
        <function name="seed"/>
        <function name="base"/>
        <function name="operator()"/>
        <function name="discard"/>
        <function name="min"/>
        <function name="max"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>
        <overload name="operator&lt;&lt;" link="operator_ltltgtgt"/>
        <overload name="operator&gt;&gt;" link="operator_ltltgtgt"/>

        <!--todo mem objects-->
    </class>

    <class name="std::random_device" link="cpp/numeric/random/random_device">
        <constructor/>
        <function name="operator()"/>
        <function name="min"/>
        <function name="max"/>
        <function name="entropy"/>
    </class>

    <typedef name="std::minstd_rand0" alias="std::linear_congruential_engine"/>
    <typedef name="std::minstd_rand" alias="std::linear_congruential_engine"/>
    <typedef name="std::mt19937" alias="std::mersenne_twister_engine"/>
    <typedef name="std::mt19937_64" alias="std::mersenne_twister_engine"/>
    <typedef name="std::ranlux24_base" alias="std::subtract_with_carry_engine"/>
    <typedef name="std::ranlux48_base" alias="std::subtract_with_carry_engine"/>
    <typedef name="std::ranlux24" alias="std::discard_block_engine"/>
    <typedef name="std::ranlux48" alias="std::discard_block_engine"/>
    <typedef name="std::knuth_b" alias="std::shuffle_order_engine"/>
    <typedef name="std::default_random_engine" link="cpp/numeric/random"/>

    <function name="std::srand" link="cpp/numeric/random/srand"/>
    <function name="std::rand" link="cpp/numeric/random/rand"/>
    <const name="RAND_MAX" link="cpp/numeric/random/RAND_MAX"/>

    <function name="std::generate_canonical" link="cpp/numeric/random/generate_canonical"/>

    <class name="std::seed_seq" link="cpp/numeric/random/seed_seq">
        <constructor/>
        <function name="generate"/>
        <function name="size"/>
        <function name="param"/>
    </class>

    <class name="std::uniform_int_distribution" link="cpp/numeric/random/uniform_int_distribution">
        <constructor/>
        <function name="reset"/>
        <function name="operator()"/>

        <function name="a" link="params"/>
        <function name="b" link="params"/>
        <function name="param"/>
        <function name="min"/>
        <function name="max"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>

        <overload name="operator&lt;&lt;" link="operator_ltltgtgt"/>
        <overload name="operator&gt;&gt;" link="operator_ltltgtgt"/>
    </class>

    <class name="std::uniform_real_distribution" link="cpp/numeric/random/uniform_real_distribution">
        <constructor/>
        <function name="reset"/>
        <overload name="operator()"/>

        <function name="a" link="params"/>
        <function name="b" link="params"/>
        <function name="param"/>
        <function name="min"/>
        <function name="max"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>

        <overload name="operator&lt;&lt;" link="operator_ltltgtgt"/>
        <overload name="operator&gt;&gt;" link="operator_ltltgtgt"/>
    </class>

    <class name="std::bernoulli_distribution" link="cpp/numeric/random/bernoulli_distribution">
        <constructor/>
        <function name="reset"/>
        <overload name="operator()"/>

        <function name="p"/>
        <function name="param"/>
        <function name="min"/>
        <function name="max"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>

        <overload name="operator&lt;&lt;" link="operator_ltltgtgt"/>
        <overload name="operator&gt;&gt;" link="operator_ltltgtgt"/>
    </class>

    <class name="std::binomial_distribution" link="cpp/numeric/random/binomial_distribution">
        <constructor/>
        <function name="reset"/>
        <overload name="operator()"/>

        <function name="t" link="params"/>
        <function name="p" link="params"/>
        <function name="param"/>
        <function name="min"/>
        <function name="max"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>

        <overload name="operator&lt;&lt;" link="operator_ltltgtgt"/>
        <overload name="operator&gt;&gt;" link="operator_ltltgtgt"/>
    </class>

    <class name="std::negative_binomial_distribution" link="cpp/numeric/random/negative_binomial_distribution">
        <constructor/>
        <function name="reset"/>
        <overload name="operator()"/>

        <function name="k" link="params"/>
        <function name="p" link="params"/>
        <function name="param"/>
        <function name="min"/>
        <function name="max"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>

        <overload name="operator&lt;&lt;" link="operator_ltltgtgt"/>
        <overload name="operator&gt;&gt;" link="operator_ltltgtgt"/>
    </class>

    <class name="std::geometric_distribution" link="cpp/numeric/random/geometric_distribution">
        <constructor/>
        <function name="reset"/>
        <overload name="operator()"/>

        <function name="p"/>
        <function name="param"/>
        <function name="min"/>
        <function name="max"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>

        <overload name="operator&lt;&lt;" link="operator_ltltgtgt"/>
        <overload name="operator&gt;&gt;" link="operator_ltltgtgt"/>
    </class>

    <class name="std::poisson_distribution" link="cpp/numeric/random/poisson_distribution">
        <constructor/>
        <function name="reset"/>
        <overload name="operator()"/>

        <function name="mean"/>
        <function name="param"/>
        <function name="min"/>
        <function name="max"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>

        <overload name="operator&lt;&lt;" link="operator_ltltgtgt"/>
        <overload name="operator&gt;&gt;" link="operator_ltltgtgt"/>
    </class>

    <class name="std::exponential_distribution" link="cpp/numeric/random/exponential_distribution">
        <constructor/>
        <function name="reset"/>
        <function name="operator()"/>

        <function name="lambda"/>
        <function name="param"/>
        <function name="min"/>
        <function name="max"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>

        <overload name="operator&lt;&lt;" link="operator_ltltgtgt"/>
        <overload name="operator&gt;&gt;" link="operator_ltltgtgt"/>
    </class>

    <class name="std::gamma_distribution" link="cpp/numeric/random/gamma_distribution">
        <constructor/>
        <function name="reset"/>
        <function name="operator()"/>

        <function name="alpha" link="params"/>
        <function name="beta" link="params"/>
        <function name="param"/>
        <function name="min"/>
        <function name="max"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>

        <overload name="operator&lt;&lt;" link="operator_ltltgtgt"/>
        <overload name="operator&gt;&gt;" link="operator_ltltgtgt"/>
    </class>

    <class name="std::weibull_distribution" link="cpp/numeric/random/weibull_distribution">
        <constructor/>
        <function name="reset"/>
        <function name="operator()"/>

        <function name="a" link="params"/>
        <function name="b" link="params"/>
        <function name="param"/>
        <function name="min"/>
        <function name="max"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>

        <overload name="operator&lt;&lt;" link="operator_ltltgtgt"/>
        <overload name="operator&gt;&gt;" link="operator_ltltgtgt"/>
    </class>

    <class name="std::extreme_value_distribution" link="cpp/numeric/random/extreme_value_distribution">
        <constructor/>
        <function name="reset"/>
        <function name="operator()"/>

        <function name="a" link="params"/>
        <function name="b" link="params"/>
        <function name="param"/>
        <function name="min"/>
        <function name="max"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>

        <overload name="operator&lt;&lt;" link="operator_ltltgtgt"/>
        <overload name="operator&gt;&gt;" link="operator_ltltgtgt"/>
    </class>

    <class name="std::normal_distribution" link="cpp/numeric/random/normal_distribution">
        <constructor/>
        <function name="reset"/>
        <function name="operator()"/>

        <function name="mean" link="params"/>
        <function name="stddev" link="params"/>
        <function name="param"/>
        <function name="min"/>
        <function name="max"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>

        <overload name="operator&lt;&lt;" link="operator_ltltgtgt"/>
        <overload name="operator&gt;&gt;" link="operator_ltltgtgt"/>
    </class>

    <class name="std::lognormal_distribution" link="cpp/numeric/random/lognormal_distribution">
        <constructor/>
        <function name="reset"/>
        <function name="operator()"/>

        <function name="m" link="params"/>
        <function name="s" link="params"/>
        <function name="param"/>
        <function name="min"/>
        <function name="max"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>

        <overload name="operator&lt;&lt;" link="operator_ltltgtgt"/>
        <overload name="operator&gt;&gt;" link="operator_ltltgtgt"/>
    </class>

    <class name="std::chi_squared_distribution" link="cpp/numeric/random/chi_squared_distribution">
        <constructor/>
        <function name="reset"/>
        <function name="operator()"/>

        <function name="n"/>
        <function name="param"/>
        <function name="min"/>
        <function name="max"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>

        <overload name="operator&lt;&lt;" link="operator_ltltgtgt"/>
        <overload name="operator&gt;&gt;" link="operator_ltltgtgt"/>
    </class>

    <class name="std::cauchy_distribution" link="cpp/numeric/random/cauchy_distribution">
        <constructor/>
        <function name="reset"/>
        <function name="operator()"/>

        <function name="a" link="params"/>
        <function name="b" link="params"/>
        <function name="param"/>
        <function name="min"/>
        <function name="max"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>

        <overload name="operator&lt;&lt;" link="operator_ltltgtgt"/>
        <overload name="operator&gt;&gt;" link="operator_ltltgtgt"/>
    </class>

    <class name="std::fisher_f_distribution" link="cpp/numeric/random/fisher_f_distribution">
        <constructor/>
        <function name="reset"/>
        <function name="operator()"/>

        <function name="m" link="params"/>
        <function name="n" link="params"/>
        <function name="param"/>
        <function name="min"/>
        <function name="max"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>

        <overload name="operator&lt;&lt;" link="operator_ltltgtgt"/>
        <overload name="operator&gt;&gt;" link="operator_ltltgtgt"/>
    </class>

    <class name="std::student_t_distribution" link="cpp/numeric/random/student_t_distribution">
        <constructor/>
        <function name="reset"/>
        <function name="operator()"/>

        <function name="n"/>
        <function name="param"/>
        <function name="min"/>
        <function name="max"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>

        <overload name="operator&lt;&lt;" link="operator_ltltgtgt"/>
        <overload name="operator&gt;&gt;" link="operator_ltltgtgt"/>
    </class>

    <class name="std::discrete_distribution" link="cpp/numeric/random/discrete_distribution">
        <constructor/>
        <function name="reset"/>
        <function name="operator()"/>

        <function name="probabilities"/>
        <function name="param"/>
        <function name="min"/>
        <function name="max"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>

        <overload name="operator&lt;&lt;" link="operator_ltltgtgt"/>
        <overload name="operator&gt;&gt;" link="operator_ltltgtgt"/>
    </class>

    <class name="std::piecewise_constant_distribution" link="cpp/numeric/random/piecewise_constant_distribution">
        <constructor/>
        <function name="reset"/>
        <function name="operator()"/>

        <function name="intervals" link="params"/>
        <function name="densities" link="params"/>
        <function name="param"/>
        <function name="min"/>
        <function name="max"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>

        <overload name="operator&lt;&lt;" link="operator_ltltgtgt"/>
        <overload name="operator&gt;&gt;" link="operator_ltltgtgt"/>
    </class>

    <class name="std::piecewise_linear_distribution" link="cpp/numeric/random/piecewise_linear_distribution">
        <constructor/>
        <function name="reset"/>
        <function name="operator()"/>

        <function name="intervals" link="params"/>
        <function name="densities" link="params"/>
        <function name="param"/>
        <function name="min"/>
        <function name="max"/>

        <overload name="operator==" link="operator_cmp"/>
        <overload name="operator!=" link="operator_cmp"/>

        <overload name="operator&lt;&lt;" link="operator_ltltgtgt"/>
        <overload name="operator&gt;&gt;" link="operator_ltltgtgt"/>
    </class>

    <!-- cpp/numeric/ratio -->

    <class name="std::ratio" link="cpp/numeric/ratio/ratio"/>

    <typedef name="std::yocto" alias="std::ratio"/>
    <typedef name="std::femto" alias="std::ratio"/>
    <typedef name="std::pico" alias="std::ratio"/>
    <typedef name="std::nano" alias="std::ratio"/>
    <typedef name="std::micro" alias="std::ratio"/>
    <typedef name="std::milli" alias="std::ratio"/>
    <typedef name="std::centi" alias="std::ratio"/>
    <typedef name="std::deci" alias="std::ratio"/>
    <typedef name="std::deca" alias="std::ratio"/>
    <typedef name="std::hecto" alias="std::ratio"/>
    <typedef name="std::kilo" alias="std::ratio"/>
    <typedef name="std::mega" alias="std::ratio"/>
    <typedef name="std::giga" alias="std::ratio"/>
    <typedef name="std::tera" alias="std::ratio"/>
    <typedef name="std::peta" alias="std::ratio"/>
    <typedef name="std::exa" alias="std::ratio"/>
    <typedef name="std::zetta" alias="std::ratio"/>
    <typedef name="std::yotta" alias="std::ratio"/>

    <class name="std::ratio_add" link="cpp/numeric/ratio/ratio_add"/>
    <class name="std::ratio_subtract" link="cpp/numeric/ratio/ratio_subtract"/>
    <class name="std::ratio_multiply" link="cpp/numeric/ratio/ratio_multiply"/>
    <class name="std::ratio_divide" link="cpp/numeric/ratio/ratio_divide"/>

    <class name="std::ratio_equal" link="cpp/numeric/ratio/ratio_equal"/>
    <class name="std::ratio_not_equal" link="cpp/numeric/ratio/ratio_not_equal"/>
    <class name="std::ratio_less" link="cpp/numeric/ratio/ratio_less"/>
    <class name="std::ratio_less_equal" link="cpp/numeric/ratio/ratio_less_equal"/>
    <class name="std::ratio_greater" link="cpp/numeric/ratio/ratio_greater"/>
    <class name="std::ratio_greater_equal" link="cpp/numeric/ratio/ratio_greater_equal"/>

    <!-- cpp/algorithm -->

    <function name="std::all_of" link="cpp/algorithm/all_any_none_of"/>
    <function name="std::any_of" link="cpp/algorithm/all_any_none_of"/>
    <function name="std::none_of" link="cpp/algorithm/all_any_none_of"/>
    <function name="std::for_each" link="cpp/algorithm/for_each"/>
    <function name="std::count" link="cpp/algorithm/count"/>
    <function name="std::count_if" link="cpp/algorithm/count"/>
    <function name="std::mismatch" link="cpp/algorithm/mismatch"/>
    <function name="std::equal" link="cpp/algorithm/equal"/>
    <function name="std::find" link="cpp/algorithm/find"/>
    <function name="std::find_if" link="cpp/algorithm/find"/>
    <function name="std::find_if_not" link="cpp/algorithm/find"/>
    <function name="std::find_end" link="cpp/algorithm/find_end"/>
    <function name="std::find_first_of" link="cpp/algorithm/find_first_of"/>
    <function name="std::adjacent_find" link="cpp/algorithm/adjacent_find"/>
    <function name="std::search" link="cpp/algorithm/search"/>
    <function name="std::search_n" link="cpp/algorithm/search_n"/>

    <function name="std::copy" link="cpp/algorithm/copy"/>
    <function name="std::copy_if" link="cpp/algorithm/copy"/>
    <function name="std::copy_n" link="cpp/algorithm/copy_n"/>
    <function name="std::copy_backward" link="cpp/algorithm/copy_backward"/>
    <function name="std::move" link="cpp/algorithm/move"/>
    <function name="std::move_backward" link="cpp/algorithm/move_backward"/>
    <function name="std::fill" link="cpp/algorithm/fill"/>
    <function name="std::fill_n" link="cpp/algorithm/fill_n"/>
    <function name="std::transform" link="cpp/algorithm/transform"/>
    <function name="std::generate" link="cpp/algorithm/generate"/>
    <function name="std::generate_n" link="cpp/algorithm/generate_n"/>
    <function name="std::remove" link="cpp/algorithm/remove"/>
    <function name="std::remove_if" link="cpp/algorithm/remove"/>
    <function name="std::remove_copy" link="cpp/algorithm/remove_copy"/>
    <function name="std::remove_copy_if" link="cpp/algorithm/remove_copy"/>
    <function name="std::replace" link="cpp/algorithm/replace"/>
    <function name="std::replace_if" link="cpp/algorithm/replace"/>
    <function name="std::replace_copy" link="cpp/algorithm/replace_copy"/>
    <function name="std::replace_copy_if" link="cpp/algorithm/replace_copy"/>
    <function name="std::swap" link="cpp/algorithm/swap"/>
    <function name="std::swap_ranges" link="cpp/algorithm/swap_ranges"/>
    <function name="std::iter_swap" link="cpp/algorithm/iter_swap"/>
    <function name="std::reverse" link="cpp/algorithm/reverse"/>
    <function name="std::reverse_copy" link="cpp/algorithm/reverse_copy"/>
    <function name="std::rotate" link="cpp/algorithm/rotate"/>
    <function name="std::rotate_copy" link="cpp/algorithm/rotate_copy"/>
    <function name="std::random_shuffle" link="cpp/algorithm/random_shuffle"/>
    <function name="std::shuffle" link="cpp/algorithm/random_shuffle"/>
    <function name="std::unique" link="cpp/algorithm/unique"/>
    <function name="std::unique_copy" link="cpp/algorithm/unique_copy"/>

    <function name="std::is_partitioned" link="cpp/algorithm/is_partitioned"/>
    <function name="std::partition" link="cpp/algorithm/partition"/>
    <function name="std::partition_copy" link="cpp/algorithm/partition_copy"/>
    <function name="std::stable_partition" link="cpp/algorithm/stable_partition"/>
    <function name="std::partition_point" link="cpp/algorithm/partition_point"/>

    <function name="std::is_sorted" link="cpp/algorithm/is_sorted"/>
    <function name="std::is_sorted_until" link="cpp/algorithm/is_sorted_until"/>
    <function name="std::sort" link="cpp/algorithm/sort"/>
    <function name="std::partial_sort" link="cpp/algorithm/partial_sort"/>
    <function name="std::partial_sort_copy" link="cpp/algorithm/partial_sort_copy"/>
    <function name="std::stable_sort" link="cpp/algorithm/stable_sort"/>
    <function name="std::nth_element" link="cpp/algorithm/nth_element"/>

    <function name="std::lower_bound" link="cpp/algorithm/lower_bound"/>
    <function name="std::upper_bound" link="cpp/algorithm/upper_bound"/>
    <function name="std::binary_search" link="cpp/algorithm/binary_search"/>
    <function name="std::equal_range" link="cpp/algorithm/equal_range"/>

    <function name="std::merge" link="cpp/algorithm/merge"/>
    <function name="std::inplace_merge" link="cpp/algorithm/inplace_merge"/>
    <function name="std::includes" link="cpp/algorithm/includes"/>
    <function name="std::set_difference" link="cpp/algorithm/set_difference"/>
    <function name="std::set_intersection" link="cpp/algorithm/set_intersection"/>
    <function name="std::set_symmetric_difference" link="cpp/algorithm/set_symmetric_difference"/>
    <function name="std::set_union" link="cpp/algorithm/set_union"/>

    <function name="std::is_heap" link="cpp/algorithm/is_heap"/>
    <function name="std::is_heap_until" link="cpp/algorithm/is_heap_until"/>
    <function name="std::make_heap" link="cpp/algorithm/make_heap"/>
    <function name="std::push_heap" link="cpp/algorithm/push_heap"/>
    <function name="std::pop_heap" link="cpp/algorithm/pop_heap"/>
    <function name="std::sort_heap" link="cpp/algorithm/sort_heap"/>

    <function name="std::max" link="cpp/algorithm/max"/>
    <function name="std::max_element" link="cpp/algorithm/max_element"/>
    <function name="std::min" link="cpp/algorithm/min"/>
    <function name="std::min_element" link="cpp/algorithm/min_element"/>
    <function name="std::minmax" link="cpp/algorithm/minmax"/>
    <function name="std::minmax_element" link="cpp/algorithm/minmax_element"/>

    <function name="std::lexicographical_compare" link="cpp/algorithm/lexicographical_compare"/>
    <function name="std::is_permutation" link="cpp/algorithm/is_permutation"/>
    <function name="std::next_permutation" link="cpp/algorithm/next_permutation"/>
    <function name="std::prev_permutation" link="cpp/algorithm/prev_permutation"/>

    <function name="std::accumulate" link="cpp/algorithm/accumulate"/>
    <function name="std::inner_product" link="cpp/algorithm/inner_product"/>
    <function name="std::adjacent_difference" link="cpp/algorithm/adjacent_difference"/>
    <function name="std::partial_sum" link="cpp/algorithm/partial_sum"/>
    <function name="std::iota" link="cpp/algorithm/iota"/>

    <function name="std::qsort" link="cpp/algorithm/qsort"/>
    <function name="std::bsearch" link="cpp/algorithm/bsearch"/>

    <!-- cpp/io -->

    <class name="std::basic_streambuf" link="cpp/io/basic_streambuf">
        <constructor/>
        <destructor/>

        <function name="pubimbue"/>
        <function name="getloc"/>

        <function name="pubsetbuf"/>
        <function name="pubseekoff"/>
        <function name="pubseekpos"/>
        <function name="pubsync"/>

        <function name="in_avail"/>
        <function name="snextc"/>
        <function name="sbumpc"/>
        <function name="sgetc"/>
        <function name="sgetn"/>

        <function name="sputc"/>
        <function name="sputn"/>

        <function name="sputbackc"/>
        <function name="sungetc"/>

        <function name="operator="/>
        <function name="swap"/>

        <function name="imbue" link="pubimbue"/>

        <function name="setbuf" link="pubsetbuf"/>
        <function name="seekoff" link="pubseekoff"/>
        <function name="seekpos" link="pubseekpos"/>
        <function name="sync" link="pubsync"/>

        <function name="showmanyc"/>
        <function name="underflow"/>
        <function name="uflow"/>
        <function name="xsgetn" link="sgetn"/>
        <function name="eback" link="gptr"/>
        <function name="gptr"/>
        <function name="egptr" link="gptr"/>
        <function name="gbump"/>
        <function name="setg"/>

        <function name="xsputn" link="sputn"/>
        <function name="overflow"/>
        <function name="pbase" link="pptr"/>
        <function name="pptr"/>
        <function name="epptr" link="pptr"/>

        <function name="pbump"/>
        <function name="setp"/>

        <function name="pbackfail"/>
    </class>

    <class name="std::basic_filebuf" link="cpp/io/basic_filebuf">
        <inherits name="std::basic_streambuf"/>

        <constructor/>
        <destructor/>

        <function name="operator="/>
        <function name="swap"/>

        <function name="is_open"/>
        <function name="open"/>
        <function name="close"/>

        <function name="showmanyc"/>
        <function name="underflow"/>
        <function name="uflow"/>
        <function name="pbackfail"/>
        <function name="overflow"/>
        <function name="setbuf"/>
        <function name="seekoff"/>
        <function name="seekpos"/>
        <function name="sync"/>
        <function name="imbue"/>

        <overload name="std::swap" link="swap2"/>
    </class>

    <class name="std::basic_stringbuf" link="cpp/io/basic_stringbuf">
        <inherits name="std::basic_streambuf"/>

        <constructor/>
        <function name="operator="/>
        <function name="swap"/>
        <function name="str"/>

        <function name="underflow"/>
        <function name="pbackfail"/>
        <function name="overflow"/>
        <function name="setbuf"/>
        <function name="seekoff"/>
        <function name="seekpos"/>

        <overload name="std::swap" link="swap2"/>
    </class>

    <class name="std::ios_base" link="cpp/io/ios_base">
        <constructor/>
        <destructor/>
        <function name="flags"/>
        <function name="setf"/>
        <function name="unsetf"/>
        <function name="precision"/>
        <function name="width"/>

        <function name="imbue"/>
        <function name="getloc"/>

        <function name="xalloc"/>
        <function name="iword"/>
        <function name="pword"/>

        <function name="register_callback"/>
        <function name="sync_with_stdio"/>

        <class name="failure">
            <inherits name="std::exception"/>
            <constructor link="."/>
        </class>

        <enum name="openmode"/>
        <const name="app" link="openmode"/>
        <const name="binary" link="openmode"/>
        <const name="in" link="openmode"/>
        <const name="out" link="openmode"/>
        <const name="trunc" link="openmode"/>
        <const name="ate" link="openmode"/>

        <enum name="fmtflags"/>
        <const name="dec" link="fmtflags"/>
        <const name="oct" link="fmtflags"/>
        <const name="hex" link="fmtflags"/>
        <const name="basefield" link="fmtflags"/>
        <const name="left" link="fmtflags"/>
        <const name="right" link="fmtflags"/>
        <const name="internal" link="fmtflags"/>
        <const name="adjustfield" link="fmtflags"/>
        <const name="scientific" link="fmtflags"/>
        <const name="fixed" link="fmtflags"/>
        <const name="floatfield" link="fmtflags"/>
        <const name="boolalpha" link="fmtflags"/>
        <const name="showbase" link="fmtflags"/>
        <const name="showpoint" link="fmtflags"/>
        <const name="showpos" link="fmtflags"/>
        <const name="skipws" link="fmtflags"/>
        <const name="unitbuf" link="fmtflags"/>
        <const name="uppercase" link="fmtflags"/>

        <enum name="iostate"/>
        <const name="goodbit" link="iostate"/>
        <const name="badbit" link="iostate"/>
        <const name="failbit" link="iostate"/>
        <const name="eofbit" link="iostate"/>

        <enum name="seekdir"/>
        <const name="beg" link="seekdir"/>
        <const name="cur" link="seekdir"/>
        <const name="end" link="seekdir"/>

        <enum name="event"/>
        <const name="erase_event" link="event"/>
        <const name="imbue_event" link="event"/>
        <const name="copyfmt_event" link="event"/>

        <typedef name="event_callback"/>
    </class>

    <class name="std::basic_ios" link="cpp/io/basic_ios">
        <inherits name="std::ios_base"/>
        <constructor/>
        <destructor/>

        <function name="good"/>
        <function name="eof"/>
        <function name="fail"/>
        <function name="bad"/>
        <function name="operator!"/>
        <function name="operator bool" link="operator_bool"/>
        <function name="rdstate"/>
        <function name="setstate"/>
        <function name="clear"/>

        <function name="copyfmt"/>
        <function name="fill"/>

        <function name="exceptions"/>
        <function name="imbue"/>
        <function name="rdbuf"/>
        <function name="tie"/>
        <function name="narrow"/>
        <function name="widen"/>

        <function name="init"/>
        <function name="move"/>
        <function name="swap"/>
        <function name="set_rdbuf"/>
    </class>

    <class name="std::basic_istream" link="cpp/io/basic_istream">
        <inherits name="std::basic_ios"/>
        <constructor/>
        <destructor/>

        <function name="operator&gt;&gt;" link="operator_gtgt"/>
        <function name="get"/>
        <function name="peek"/>
        <function name="unget"/>
        <function name="putback"/>
        <function name="getline"/>
        <function name="ignore"/>
        <function name="read"/>
        <function name="readsome"/>
        <function name="gcount"/>

        <function name="tellg"/>
        <function name="seekg"/>
        <function name="sync"/>

        <class name="sentry">
            <constructor link="."/>
            <destructor link="."/>
            <function name="operator bool" link="."/>
        </class>

        <overload name="operator&gt;&gt;" link="operator_gtgt2"/>
    </class>

    <class name="std::basic_ostream" link="cpp/io/basic_ostream">
        <inherits name="std::basic_ios"/>
        <constructor/>
        <destructor/>

        <function name="operator&lt;&lt;" link="operator_ltlt"/>
        <function name="put"/>
        <function name="write"/>
        <function name="tellp"/>
        <function name="seekp"/>
        <function name="flush"/>

        <class name="sentry">
            <constructor link="."/>
            <destructor link="."/>
            <function name="operator bool" link="."/>
        </class>

        <overload name="operator&lt;&lt;" link="operator_ltlt2"/>
    </class>

    <class name="std::basic_iostream" link="cpp/io/basic_iostream">
        <inherits name="std::basic_istream"/>
        <inherits name="std::basic_ostream"/>
        <constructor/>
        <destructor/>
    </class>

    <class name="std::basic_ifstream" link="cpp/io/basic_ifstream">
        <inherits name="std::basic_istream"/>
        <constructor/>
        <function name="operator="/>
        <function name="swap"/>
        <function name="rdbuf"/>

        <function name="is_open"/>
        <function name="open"/>
        <function name="close"/>

        <overload name="std::swap" link="swap2"/>
    </class>

    <class name="std::basic_ofstream" link="cpp/io/basic_ofstream">
        <inherits name="std::basic_ostream"/>
        <constructor/>
        <function name="operator="/>
        <function name="swap"/>
        <function name="rdbuf"/>

        <function name="is_open"/>
        <function name="open"/>
        <function name="close"/>

        <overload name="std::swap" link="swap2"/>
    </class>

    <class name="std::basic_fstream" link="cpp/io/basic_fstream">
        <inherits name="std::basic_iostream"/>
        <constructor/>
        <function name="operator="/>
        <function name="swap"/>
        <function name="rdbuf"/>

        <function name="is_open"/>
        <function name="open"/>
        <function name="close"/>

        <overload name="std::swap" link="swap2"/>
    </class>

    <class name="std::basic_istringstream" link="cpp/io/basic_istringstream">
        <inherits name="std::basic_istream"/>
        <constructor/>
        <function name="operator="/>
        <function name="swap"/>
        <function name="rdbuf"/>

        <function name="str"/>

        <overload name="std::swap" link="swap2"/>
    </class>

    <class name="std::basic_ostringstream" link="cpp/io/basic_ostringstream">
        <inherits name="std::basic_ostream"/>
        <constructor/>
        <function name="operator="/>
        <function name="swap"/>
        <function name="rdbuf"/>

        <function name="str"/>

        <overload name="std::swap" link="swap2"/>
    </class>

    <class name="std::basic_stringstream" link="cpp/io/basic_stringstream">
        <inherits name="std::basic_iostream"/>
        <constructor/>
        <function name="operator="/>
        <function name="swap"/>
        <function name="rdbuf"/>

        <function name="str"/>

        <overload name="std::swap" link="swap2"/>
    </class>

    <typedef name="std::streambuf" alias="std::basic_streambuf"/>
    <typedef name="std::filebuf" alias="std::basic_filebuf"/>
    <typedef name="std::stringbuf" alias="std::basic_stringbuf"/>
    <typedef name="std::istream" alias="std::basic_istream"/>
    <typedef name="std::ostream" alias="std::basic_ostream"/>
    <typedef name="std::iostream" alias="std::basic_iostream"/>
    <typedef name="std::ifstream" alias="std::basic_ifstream"/>
    <typedef name="std::ofstream" alias="std::basic_ofstream"/>
    <typedef name="std::fstream" alias="std::basic_fstream"/>
    <typedef name="std::istringstream" alias="std::basic_istringstream"/>
    <typedef name="std::ostringstream" alias="std::basic_ostringstream"/>
    <typedef name="std::stringstream" alias="std::basic_stringstream"/>

    <typedef name="std::wstreambuf" alias="std::basic_streambuf"/>
    <typedef name="std::wfilebuf" alias="std::basic_filebuf"/>
    <typedef name="std::wstringbuf" alias="std::basic_stringbuf"/>
    <typedef name="std::wistream" alias="std::basic_istream"/>
    <typedef name="std::wostream" alias="std::basic_ostream"/>
    <typedef name="std::wiostream" alias="std::basic_iostream"/>
    <typedef name="std::wifstream" alias="std::basic_ifstream"/>
    <typedef name="std::wofstream" alias="std::basic_ofstream"/>
    <typedef name="std::wfstream" alias="std::basic_fstream"/>
    <typedef name="std::wistringstream" alias="std::basic_istringstream"/>
    <typedef name="std::wostringstream" alias="std::basic_ostringstream"/>
    <typedef name="std::wstringstream" alias="std::basic_stringstream"/>

    <!-- deprecated classes -->
    <class name="std::strstreambuf" link="cpp/io/strstreambuf">
        <inherits name="std::basic_streambuf"/>

        <constructor/>
        <destructor/>
        <function name="freeze"/>
        <function name="str"/>
        <function name="pcount"/>

        <function name="underflow"/>
        <function name="pbackfail"/>
        <function name="overflow"/>
        <function name="setbuf"/>
        <function name="seekoff"/>
        <function name="seekpos"/>
    </class>

    <class name="std::istrstream" link="cpp/io/istrstream">
        <inherits name="std::basic_istream"/>

        <constructor/>
        <destructor/>
        <function name="rdbuf"/>
        <function name="str"/>
    </class>

    <class name="std::ostrstream" link="cpp/io/ostrstream">
        <inherits name="std::basic_ostream"/>

        <constructor/>
        <destructor/>
        <function name="rdbuf"/>
        <function name="str"/>
        <function name="freeze"/>
        <function name="pcount"/>
    </class>

    <class name="std::strstream" link="cpp/io/strstream">
        <inherits name="std::basic_iostream"/>

        <constructor/>
        <destructor/>
        <function name="rdbuf"/>
        <function name="str"/>
        <function name="freeze"/>
        <function name="pcount"/>
    </class>

    <!-- class doesn't fit here, but whatever -->
    <class name="std::cin" link="cpp/io/basic_istream"/>
    <class name="std::wcin" link="cpp/io/basic_istream"/>
    <class name="std::cout" link="cpp/io/basic_ostream"/>
    <class name="std::wcout" link="cpp/io/basic_ostream"/>
    <class name="std::cerr" link="cpp/io/basic_ostream"/>
    <class name="std::wcerr" link="cpp/io/basic_ostream"/>
    <class name="std::clog" link="cpp/io/basic_ostream"/>
    <class name="std::wclog" link="cpp/io/basic_ostream"/>

    <!-- manipulators-->

    <function name="std::boolalpha" link="cpp/io/manip/boolalpha"/>
    <function name="std::noboolalpha" link="cpp/io/manip/boolalpha"/>
    <function name="std::showbase" link="cpp/io/manip/showbase"/>
    <function name="std::noshowbase" link="cpp/io/manip/showbase"/>
    <function name="std::showpoint" link="cpp/io/manip/showpoint"/>
    <function name="std::noshowpoint" link="cpp/io/manip/showpoint"/>
    <function name="std::showpos" link="cpp/io/manip/showpos"/>
    <function name="std::noshowpos" link="cpp/io/manip/showpos"/>
    <function name="std::skipws" link="cpp/io/manip/skipws"/>
    <function name="std::noskipws" link="cpp/io/manip/skipws"/>
    <function name="std::uppercase" link="cpp/io/manip/uppercase"/>
    <function name="std::nouppercase" link="cpp/io/manip/uppercase"/>
    <function name="std::unitbuf" link="cpp/io/manip/unitbuf"/>
    <function name="std::nounitbuf" link="cpp/io/manip/unitbuf"/>
    <function name="std::internal" link="cpp/io/manip/left"/>
    <function name="std::left" link="cpp/io/manip/left"/>
    <function name="std::right" link="cpp/io/manip/left"/>
    <function name="std::dec" link="cpp/io/manip/hex"/>
    <function name="std::hex" link="cpp/io/manip/hex"/>
    <function name="std::oct" link="cpp/io/manip/hex"/>
    <function name="std::fixed" link="cpp/io/manip/fixed"/>
    <function name="std::scientific" link="cpp/io/manip/fixed"/>
    <function name="std::hexfloat" link="cpp/io/manip/fixed"/>
    <function name="std::defaultfloat" link="cpp/io/manip/fixed"/>

    <function name="std::ws" link="cpp/io/manip/ws"/>
    <function name="std::ends" link="cpp/io/manip/ends"/>
    <function name="std::flush" link="cpp/io/manip/flush"/>
    <function name="std::endl" link="cpp/io/manip/endl"/>

    <function name="std::resetiosflags" link="cpp/io/manip/resetiosflags"/>
    <function name="std::setiosflags" link="cpp/io/manip/setiosflags"/>
    <function name="std::setbase" link="cpp/io/manip/setbase"/>
    <function name="std::setfill" link="cpp/io/manip/setfill"/>
    <function name="std::setprecision" link="cpp/io/manip/setprecision"/>
    <function name="std::setw" link="cpp/io/manip/setw"/>
    <function name="std::get_money" link="cpp/io/manip/get_money"/>
    <function name="std::put_money" link="cpp/io/manip/put_money"/>
    <function name="std::get_time" link="cpp/io/manip/get_time"/>
    <function name="std::put_time" link="cpp/io/manip/put_time"/>

    <!-- misc -->
    <typedef name="std::streamoff" link="cpp/io/streamoff"/>
    <typedef name="std::streamsize" link="cpp/io/streamsize"/>
    <class name="std::fpos" link="cpp/io/fpos">
        <function name="state"/>
    </class>

    <typedef name="std::streampos" alias="std::fpos"/>
    <typedef name="std::u16streampos" alias="std::fpos"/>
    <typedef name="std::u32streampos" alias="std::fpos"/>
    <typedef name="std::wstreampos" alias="std::fpos"/>

    <enum name="std::io_errc" link="cpp/io/io_errc">
        <const name="stream" link="."/>
        <specialization name="std::is_error_code_enum" link="is_error_code_enum"/>
        <overload name="std::make_error_code" link="make_error_code"/>
        <overload name="std::make_error_condition" link="make_error_condition"/>
    </enum>

    <!-- cpp/io/c -->

    <function name="std::fopen" link="cpp/io/c/fopen"/>
    <function name="std::freopen" link="cpp/io/c/freopen"/>
    <function name="std::fflush" link="cpp/io/c/fflush"/>
    <function name="std::fclose" link="cpp/io/c/fclose"/>
    <function name="std::setbuf" link="cpp/io/c/setbuf"/>
    <function name="std::setvbuf" link="cpp/io/c/setvbuf"/>
    <function name="std::fread" link="cpp/io/c/fread"/>
    <function name="std::fwrite" link="cpp/io/c/fwrite"/>
    <function name="std::fgetc" link="cpp/io/c/fgetc"/>
    <function name="std::getc" link="cpp/io/c/fgetc"/>
    <function name="std::fgets" link="cpp/io/c/fgets"/>
    <function name="std::fputc" link="cpp/io/c/fputc"/>
    <function name="std::putc" link="cpp/io/c/fputc"/>
    <function name="std::fputs" link="cpp/io/c/fputs"/>
    <function name="std::getchar" link="cpp/io/c/getchar"/>
    <function name="std::gets" link="cpp/io/c/gets"/>
    <function name="std::putchar" link="cpp/io/c/putchar"/>
    <function name="std::puts" link="cpp/io/c/puts"/>
    <function name="std::ungetc" link="cpp/io/c/ungetc"/>
    <function name="std::fgetwc" link="cpp/io/c/fgetwc"/>
    <function name="std::fgetws" link="cpp/io/c/fgetws"/>
    <function name="std::fputwc" link="cpp/io/c/fputwc"/>
    <function name="std::fputws" link="cpp/io/c/fputws"/>
    <function name="std::getwchar" link="cpp/io/c/getwchar"/>
    <function name="std::putwchar" link="cpp/io/c/putwchar"/>
    <function name="std::ungetwc" link="cpp/io/c/ungetwc"/>
    <function name="std::scanf" link="cpp/io/c/fscanf"/>
    <function name="std::fscanf" link="cpp/io/c/fscanf"/>
    <function name="std::sscanf" link="cpp/io/c/fscanf"/>
    <function name="std::vscanf" link="cpp/io/c/vfscanf"/>
    <function name="std::vfscanf" link="cpp/io/c/vfscanf"/>
    <function name="std::vsscanf" link="cpp/io/c/vfscanf"/>
    <function name="std::printf" link="cpp/io/c/fprintf"/>
    <function name="std::fprintf" link="cpp/io/c/fprintf"/>
    <function name="std::sprintf" link="cpp/io/c/fprintf"/>
    <function name="std::snprintf" link="cpp/io/c/fprintf"/>
    <function name="std::vprintf" link="cpp/io/c/vfprintf"/>
    <function name="std::vfprintf" link="cpp/io/c/vfprintf"/>
    <function name="std::vsprintf" link="cpp/io/c/vfprintf"/>
    <function name="std::vsnprintf" link="cpp/io/c/vfprintf"/>
    <function name="std::wscanf" link="cpp/io/c/fwscanf"/>
    <function name="std::fwscanf" link="cpp/io/c/fwscanf"/>
    <function name="std::swscanf" link="cpp/io/c/fwscanf"/>
    <function name="std::vwscanf" link="cpp/io/c/vfwscanf"/>
    <function name="std::vfwscanf" link="cpp/io/c/vfwscanf"/>
    <function name="std::vswscanf" link="cpp/io/c/vfwscanf"/>
    <function name="std::wprintf" link="cpp/io/c/fwprintf"/>
    <function name="std::fwprintf" link="cpp/io/c/fwprintf"/>
    <function name="std::swprintf" link="cpp/io/c/fwprintf"/>
    <function name="std::vwprintf" link="cpp/io/c/vfwprintf"/>
    <function name="std::vfwprintf" link="cpp/io/c/vfwprintf"/>
    <function name="std::vswprintf" link="cpp/io/c/vfwprintf"/>
    <function name="std::ftell" link="cpp/io/c/ftell"/>
    <function name="std::fgetpos" link="cpp/io/c/fgetpos"/>
    <function name="std::fseek" link="cpp/io/c/fseek"/>
    <function name="std::fsetpos" link="cpp/io/c/fsetpos"/>
    <function name="std::rewind" link="cpp/io/c/rewind"/>
    <function name="std::clearerr" link="cpp/io/c/clearerr"/>
    <function name="std::feof" link="cpp/io/c/feof"/>
    <function name="std::ferror" link="cpp/io/c/ferror"/>
    <function name="std::perror" link="cpp/io/c/perror"/>
    <function name="std::remove" link="cpp/io/c/remove"/>
    <function name="std::rename" link="cpp/io/c/rename"/>
    <function name="std::tmpfile" link="cpp/io/c/tmpfile"/>
    <function name="std::tmpnam" link="cpp/io/c/tmpnam"/>

    <typedef name="std::FILE" link="cpp/io/c"/>
    <typedef name="std::fpos_t" link="cpp/io/c"/>
    <const name="stdin" link="cpp/io/c"/>
    <const name="stdout" link="cpp/io/c"/>
    <const name="stderr" link="cpp/io/c"/>
    <const name="EOF" link="cpp/io/c"/>
    <const name="FOPEN_MAX" link="cpp/io/c"/>
    <const name="FILENAME_MAX" link="cpp/io/c"/>
    <const name="BUFSIZ" link="cpp/io/c"/>
    <const name="_IOFBF" link="cpp/io/c"/>
    <const name="_IOLBF" link="cpp/io/c"/>
    <const name="_IONBF" link="cpp/io/c"/>
    <const name="SEEK_SET" link="cpp/io/c"/>
    <const name="SEEK_CUR" link="cpp/io/c"/>
    <const name="SEEK_END" link="cpp/io/c"/>
    <const name="TMP_MAX" link="cpp/io/c"/>
    <const name="L_tmpnam" link="cpp/io/c"/>

    <!-- cpp/locale -->

    <class name="std::locale" link="cpp/locale/locale">
        <constructor/>
        <destructor/>

        <function name="operator="/>
        <function name="combine"/>
        <function name="name"/>
        <function name="operator==" link="operator_cmp"/>
        <function name="operator!=" link="operator_cmp"/>
        <function name="operator()"/>

        <function name="global"/>
        <function name="classic"/>
    </class>

    <class name="std::locale::id" link="cpp/locale/locale/id">
        <constructor/>
    </class>

    <class name="std::locale::facet" link="cpp/locale/locale/facet">
        <constructor/>
    </class>

    <function name="std::use_facet" link="cpp/locale/use_facet"/>
    <function name="std::has_facet" link="cpp/locale/has_facet"/>

    <class name="std::wstring_convert" link="cpp/locale/wstring_convert">
        <constructor/>
        <destructor/>
        <function name="from_bytes"/>
        <function name="to_bytes"/>
        <function name="converted"/>
        <function name="state"/>
    </class>

    <class name="std::wbuffer_convert" link="cpp/locale/wbuffer_convert">
        <constructor/>
        <destructor/>
        <function name="rdbuf"/>
        <function name="state"/>
    </class>

    <class name="std::ctype_base" link="cpp/locale/ctype_base">
        <typedef name="mask" link="."/>
        <const name="space" link="."/>
        <const name="print" link="."/>
        <const name="cntrl" link="."/>
        <const name="upper" link="."/>
        <const name="lower" link="."/>
        <const name="alpha" link="."/>
        <const name="digit" link="."/>
        <const name="punct" link="."/>
        <const name="xdigit" link="."/>
        <const name="blank" link="."/>
        <const name="alnum" link="."/>
        <const name="graph" link="."/>
    </class>

    <class name="std::codecvt_base" link="cpp/locale/codecvt_base">
        <enum name="result" link="."/>
        <const name="ok" link="."/>
        <const name="partial" link="."/>
        <const name="error" link="."/>
        <const name="noconv" link="."/>
    </class>

    <class name="std::messages_base" link="cpp/locale/messages_base">
        <typedef name="catalog" link="."/>
    </class>

    <class name="std::time_base" link="cpp/locale/time_base">
        <enum name="dateorder" link="."/>
        <const name="no_order" link="."/>
        <const name="dmy" link="."/>
        <const name="mdy" link="."/>
        <const name="ymd" link="."/>
        <const name="ydm" link="."/>
    </class>

    <class name="std::money_base" link="cpp/locale/money_base">
        <enum name="part" link="."/>
        <const name="none" link="."/>
        <const name="space" link="."/>
        <const name="symbol" link="."/>
        <const name="sign" link="."/>
        <const name="value" link="."/>
        <class name="pattern" link="."/>
    </class>

    <class name="std::ctype" link="cpp/locale/ctype">
        <inherits name="std::ctype_base"/>

        <constructor/>
        <destructor/>
        <function name="is"/>
        <function name="scan_is"/>
        <function name="toupper"/>
        <function name="tolower"/>
        <function name="widen"/>
        <function name="narrow"/>

        <!-- protected -->
        <function name="do_is" link="is"/>
        <function name="do_scan_is" link="scan_is"/>
        <function name="do_toupper" link="toupper"/>
        <function name="do_tolower" link="tolower"/>
        <function name="do_widen" link="widen"/>
        <function name="do_narrow" link="narrow"/>

        <!-- todo id -->
    </class>

    <!-- todo ctype<char> -->

    <class name="std::codecvt" link="cpp/locale/codecvt">
        <inherits name="std::codecvt_base"/>

        <typedef name="intern_type" link="."/>
        <typedef name="extern_type" link="."/>
        <typedef name="state_type" link="."/>

        <constructor/>
        <destructor/>
        <function name="out"/>
        <function name="in"/>
        <function name="unshift"/>
        <function name="encoding"/>
        <function name="always_noconv"/>
        <function name="length"/>
        <function name="max_length"/>

        <!-- protected -->
        <function name="do_out" link="out"/>
        <function name="do_in" link="in"/>
        <function name="do_unshift" link="unshift"/>
        <function name="do_encoding" link="encoding"/>
        <function name="do_always_noconv" link="always_noconv"/>
        <function name="do_length" link="length"/>
        <function name="do_max_length" link="max_length"/>

        <!-- todo id -->
    </class>

    <class name="std::collate" link="cpp/locale/collate">
        <typedef name="char_type" link="."/>
        <typedef name="string_type" link="."/>

        <constructor/>
        <destructor/>
        <function name="compare"/>
        <function name="transform"/>
        <function name="hash"/>

        <!-- protected -->
        <function name="do_compare" link="compare"/>
        <function name="do_transform" link="transform"/>
        <function name="do_hash" link="hash"/>

        <!-- todo id -->
    </class>

    <class name="std::messages" link="cpp/locale/messages">
        <inherits name="std::messages_base"/>

        <typedef name="char_type" link="."/>
        <typedef name="string_type" link="."/>

        <constructor/>
        <destructor/>
        <function name="open"/>
        <function name="get"/>
        <function name="close"/>

        <!-- protected -->
        <function name="do_open" link="open"/>
        <function name="do_get" link="get"/>
        <function name="do_close" link="close"/>

        <!-- todo id -->
    </class>

    <class name="std::time_get" link="cpp/locale/time_get">
        <inherits name="std::time_base"/>

        <typedef name="char_type" link="."/>
        <typedef name="iter_type" link="."/>

        <constructor/>
        <destructor/>
        <function name="date_order"/>
        <function name="get_time"/>
        <function name="get_date"/>
        <function name="get_weekday"/>
        <function name="get_monthname"/>
        <function name="get_year"/>
        <function name="get"/>

        <!-- protected -->
        <function name="do_date_order" link="date_order"/>
        <function name="do_get_time" link="get_time"/>
        <function name="do_get_date" link="get_date"/>
        <function name="do_get_weekday" link="get_weekday"/>
        <function name="do_get_monthname" link="get_monthname"/>
        <function name="do_get_year" link="get_year"/>
        <function name="do_get" link="get"/>

        <!-- todo id -->
    </class>

    <class name="std::time_put" link="cpp/locale/time_put">
        <inherits name="std::time_base"/>

        <typedef name="char_type" link="."/>
        <typedef name="iter_type" link="."/>

        <constructor/>
        <destructor/>
        <function name="put"/>

        <!-- protected -->
        <function name="do_put" link="put"/>

        <!-- todo id -->
    </class>

    <class name="std::num_get" link="cpp/locale/num_get">
        <typedef name="char_type" link="."/>
        <typedef name="iter_type" link="."/>

        <constructor/>
        <destructor/>
        <function name="get"/>

        <!-- protected -->
        <function name="do_get" link="get"/>

        <!-- todo id -->
    </class>

    <class name="std::num_put" link="cpp/locale/num_put">
        <typedef name="char_type" link="."/>
        <typedef name="iter_type" link="."/>

        <constructor/>
        <destructor/>
        <function name="put"/>

        <!-- protected -->
        <function name="do_put" link="put"/>

        <!-- todo id -->
    </class>

    <class name="std::numpunct" link="cpp/locale/numpunct">
        <typedef name="char_type" link="."/>
        <typedef name="string_type" link="."/>

        <constructor/>
        <destructor/>
        <function name="decimal_point"/>
        <function name="thousands_sep"/>
        <function name="grouping"/>
        <function name="truename" link="truefalsename"/>
        <function name="falsename" link="truefalsename"/>

        <!-- protected -->
        <function name="do_decimal_point" link="decimal_point"/>
        <function name="do_thousands_sep" link="thousands_sep"/>
        <function name="do_grouping" link="grouping"/>
        <function name="do_truename" link="truefalsename"/>
        <function name="do_falsename" link="truefalsename"/>

        <!-- todo id -->
    </class>

    <class name="std::money_get" link="cpp/locale/money_get">
        <inherits name="std::money_base"/>

        <typedef name="char_type" link="."/>
        <typedef name="iter_type" link="."/>
        <typedef name="string_type" link="."/>

        <constructor/>
        <destructor/>
        <function name="get"/>

        <!-- protected -->
        <function name="do_get" link="get"/>

        <!-- todo id -->
    </class>

    <class name="std::money_put" link="cpp/locale/money_put">
        <inherits name="std::money_base"/>

        <typedef name="char_type" link="."/>
        <typedef name="iter_type" link="."/>
        <typedef name="string_type" link="."/>

        <constructor/>
        <destructor/>
        <function name="put"/>

        <!-- protected -->
        <function name="do_put" link="put"/>

        <!-- todo id -->
    </class>

    <class name="std::moneypunct" link="cpp/locale/moneypunct">
        <typedef name="char_type" link="."/>
        <typedef name="string_type" link="."/>
        <inherits name="std::money_base"/>

        <constructor/>
        <destructor/>
        <function name="decimal_point"/>
        <function name="thousands_sep"/>
        <function name="grouping"/>
        <function name="curr_symbol"/>
        <function name="positive_sign"/>
        <function name="negative_sign" link="positive_sign"/>
        <function name="frac_digits"/>
        <function name="pos_format"/>
        <function name="neg_format" link="pos_format"/>

        <!-- protected -->
        <function name="do_decimal_point" link="decimal_point"/>
        <function name="do_thousands_sep" link="thousands_sep"/>
        <function name="do_grouping" link="grouping"/>
        <function name="do_curr_symbol" link="curr_symbol"/>
        <function name="do_positive_sign" link="positive_sign"/>
        <function name="do_negative_sign" link="positive_sign"/>
        <function name="do_frac_digits" link="frac_digits"/>
        <function name="do_pos_format" link="pos_format"/>
        <function name="do_neg_format" link="pos_format"/>

        <!-- todo id -->
    </class>

    <class name="std::ctype_byname" link="cpp/locale/ctype_byname">
        <inherits name="std::ctype"/>
        <constructor link="."/>
        <destructor link="."/>
    </class>

    <class name="std::codecvt_byname" link="cpp/locale/codecvt_byname">
        <inherits name="std::codecvt"/>
        <constructor link="."/>
        <destructor link="."/>
    </class>

    <class name="std::messages_byname" link="cpp/locale/messages_byname">
        <inherits name="std::messages"/>
        <constructor link="."/>
        <destructor link="."/>
    </class>

    <class name="std::collate_byname" link="cpp/locale/collate_byname">
        <inherits name="std::collate"/>
        <constructor link="."/>
        <destructor link="."/>
    </class>

    <class name="std::time_get_byname" link="cpp/locale/time_get_byname">
        <inherits name="std::time_get"/>
        <constructor link="."/>
        <destructor link="."/>
    </class>

    <class name="std::time_put_byname" link="cpp/locale/time_put_byname">
        <inherits name="std::time_put"/>
        <constructor link="."/>
        <destructor link="."/>
    </class>

    <class name="std::numpunct_byname" link="cpp/locale/numpunct_byname">
        <inherits name="std::numpunct"/>
        <constructor link="."/>
        <destructor link="."/>
    </class>

    <class name="std::moneypunct_byname" link="cpp/locale/moneypunct_byname">
        <inherits name="std::moneypunct"/>
        <constructor link="."/>
        <destructor link="."/>
    </class>

    <class name="std::codecvt_utf8" link="cpp/locale/codecvt_utf8">
        <inherits name="std::codecvt"/>
    </class>
    <class name="std::codecvt_utf16" link="cpp/locale/codecvt_utf16">
        <inherits name="std::codecvt"/>
    </class>
    <class name="std::codecvt_utf8_utf16" link="cpp/locale/codecvt_utf8_utf16">
        <inherits name="std::codecvt"/>
    </class>

    <enum name="std::codecvt_mode" link="cpp/locale/codecvt_mode"/>
    <const name="std::consume_header" link="cpp/locale/codecvt_mode"/>
    <const name="std::generate_header" link="cpp/locale/codecvt_mode"/>
    <const name="std::little_endian" link="cpp/locale/codecvt_mode"/>

    <!-- c localization facilities -->

    <function name="std::setlocale" link="cpp/locale/setlocale"/>
    <function name="std::localeconv" link="cpp/locale/localeconv"/>
    <class name="std::lconv" link="cpp/locale/lconv"/>

    <const name="LC_ALL" link="cpp/locale/LC_categories"/>
    <const name="LC_COLLATE" link="cpp/locale/LC_categories"/>
    <const name="LC_CTYPE" link="cpp/locale/LC_categories"/>
    <const name="LC_MONETARY" link="cpp/locale/LC_categories"/>
    <const name="LC_NUMERIC" link="cpp/locale/LC_categories"/>
    <const name="LC_TIME" link="cpp/locale/LC_categories"/>

    <!-- cpp/regex -->

    <class name="std::basic_regex" link="cpp/regex/basic_regex">
        <constructor/>
        <destructor/>
        <function name="operator="/>
        <function name="assign"/>

        <function name="mark_count"/>
        <function name="flags"/>

        <function name="getloc"/>
        <function name="imbue"/>

        <function name="swap"/>
    </class>

    <typedef name="std::regex" alias="std::basic_regex"/>
    <typedef name="std::wregex" alias="std::basic_regex"/>

    <class name="std::sub_match" link="cpp/regex/sub_match">
        <constructor/>
        <function name="length"/>
        <function name="str"/>
        <function name="operator string_type" link="str"/>
        <function name="compare"/>
    </class>

    <typedef name="std::csub_match" alias="std::sub_match"/>
    <typedef name="std::wcsub_match" alias="std::sub_match"/>
    <typedef name="std::ssub_match" alias="std::sub_match"/>
    <typedef name="std::wssub_match" alias="std::sub_match"/>

    <class name="std::match_results" link="cpp/regex/match_results">
        <constructor/>
        <destructor/>
        <function name="get_allocator"/>

        <function name="ready"/>

        <function name="empty"/>
        <function name="size"/>
        <function name="max_size"/>

        <function name="length"/>
        <function name="position"/>
        <function name="str"/>
        <function name="operator[]" link="operator_at"/>
        <function name="prefix"/>
        <function name="suffix"/>

        <function name="begin"/>
        <function name="cbegin" link="begin"/>
        <function name="end"/>
        <function name="cend" link="end"/>

        <function name="format"/>
        <function name="swap"/>
    </class>

    <typedef name="std::cmatch" alias="std::match_results"/>
    <typedef name="std::wcmatch" alias="std::match_results"/>
    <typedef name="std::smatch" alias="std::match_results"/>
    <typedef name="std::wsmatch" alias="std::match_results"/>

    <function name="std::regex_match" link="cpp/regex/regex_match"/>
    <function name="std::regex_search" link="cpp/regex/regex_search"/>
    <function name="std::regex_replace" link="cpp/regex/regex_replace"/>

    <class name="std::regex_iterator" link="cpp/regex/regex_iterator">
        <constructor/>
        <function name="operator="/>
        <function name="operator==" link="operator_cmp"/>
        <function name="operator!=" link="operator_cmp"/>
        <function name="operator*"/>
        <function name="operator->" link="operator*"/>
        <function name="operator++" link="operator_arith"/>
        <function name="operator++(int)" link="operator_arith"/>
    </class>

    <typedef name="std::cregex_iterator" alias="std::regex_iterator"/>
    <typedef name="std::wcregex_iterator" alias="std::regex_iterator"/>
    <typedef name="std::sregex_iterator" alias="std::regex_iterator"/>
    <typedef name="std::wsregex_iterator" alias="std::regex_iterator"/>

    <class name="std::regex_token_iterator" link="cpp/regex/regex_token_iterator">
        <constructor/>
        <function name="operator="/>
        <function name="operator==" link="operator_cmp"/>
        <function name="operator!=" link="operator_cmp"/>
        <function name="operator*"/>
        <function name="operator->" link="operator*"/>
        <function name="operator++" link="operator_arith"/>
        <function name="operator++(int)" link="operator_arith"/>
    </class>

    <typedef name="std::cregex_token_iterator" alias="std::regex_token_iterator"/>
    <typedef name="std::wcregex_token_iterator" alias="std::regex_token_iterator"/>
    <typedef name="std::sregex_token_iterator" alias="std::regex_token_iterator"/>
    <typedef name="std::wsregex_token_iterator" alias="std::regex_token_iterator"/>

    <class name="std::regex_error" link="cpp/regex/regex_error">
        <inherits name="std::runtime_error"/>
        <constructor/>
        <function name="code"/>
    </class>

    <class name="std::regex_traits" link="cpp/regex/regex_traits">
        <constructor/>
        <function name="length"/>
        <function name="translate"/>
        <function name="translate_nocase"/>
        <function name="transform"/>
        <function name="transform_primary"/>
        <function name="lookup_collatename"/>
        <function name="lookup_classname"/>
        <function name="isctype"/>
        <function name="value"/>
        <function name="imbue"/>
        <function name="getloc"/>
    </class>

    <enum name="std::regex_constants::syntax_option_type" link="cpp/regex/syntax_option_type"/>
    <const name="std::regex_constants::icase" link="cpp/regex/syntax_option_type"/>
    <const name="std::regex_constants::nosubs" link="cpp/regex/syntax_option_type"/>
    <const name="std::regex_constants::optimize" link="cpp/regex/syntax_option_type"/>
    <const name="std::regex_constants::collate" link="cpp/regex/syntax_option_type"/>
    <const name="std::regex_constants::ECMAScript" link="cpp/regex/syntax_option_type"/>
    <const name="std::regex_constants::basic" link="cpp/regex/syntax_option_type"/>
    <const name="std::regex_constants::extended" link="cpp/regex/syntax_option_type"/>
    <const name="std::regex_constants::awk" link="cpp/regex/syntax_option_type"/>
    <const name="std::regex_constants::grep" link="cpp/regex/syntax_option_type"/>
    <const name="std::regex_constants::egrep" link="cpp/regex/syntax_option_type"/>

    <enum name="std::regex_constants::match_flag_type" link="cpp/regex/match_flag_type"/>
    <const name="std::regex_constants::match_default" link="cpp/regex/match_flag_type"/>
    <const name="std::regex_constants::match_not_bol" link="cpp/regex/match_flag_type"/>
    <const name="std::regex_constants::match_not_eol" link="cpp/regex/match_flag_type"/>
    <const name="std::regex_constants::match_not_bow" link="cpp/regex/match_flag_type"/>
    <const name="std::regex_constants::match_not_eow" link="cpp/regex/match_flag_type"/>
    <const name="std::regex_constants::match_any" link="cpp/regex/match_flag_type"/>
    <const name="std::regex_constants::match_not_null" link="cpp/regex/match_flag_type"/>
    <const name="std::regex_constants::match_continuous" link="cpp/regex/match_flag_type"/>
    <const name="std::regex_constants::match_prev_avail" link="cpp/regex/match_flag_type"/>
    <const name="std::regex_constants::format_default" link="cpp/regex/match_flag_type"/>
    <const name="std::regex_constants::format_sed" link="cpp/regex/match_flag_type"/>
    <const name="std::regex_constants::format_no_copy" link="cpp/regex/match_flag_type"/>
    <const name="std::regex_constants::format_first_only" link="cpp/regex/match_flag_type"/>

    <enum name="std::regex_constants::error_type" link="cpp/regex/error_type"/>
    <enum name="std::regex_constants::error_collate" link="cpp/regex/error_type"/>
    <enum name="std::regex_constants::error_ctype" link="cpp/regex/error_type"/>
    <enum name="std::regex_constants::error_escape" link="cpp/regex/error_type"/>
    <enum name="std::regex_constants::error_backref" link="cpp/regex/error_type"/>
    <enum name="std::regex_constants::error_brack" link="cpp/regex/error_type"/>
    <enum name="std::regex_constants::error_paren" link="cpp/regex/error_type"/>
    <enum name="std::regex_constants::error_brace" link="cpp/regex/error_type"/>
    <enum name="std::regex_constants::error_badbrace" link="cpp/regex/error_type"/>
    <enum name="std::regex_constants::error_range" link="cpp/regex/error_type"/>
    <enum name="std::regex_constants::error_space" link="cpp/regex/error_type"/>
    <enum name="std::regex_constants::error_badrepeat" link="cpp/regex/error_type"/>
    <enum name="std::regex_constants::error_complexity" link="cpp/regex/error_type"/>
    <enum name="std::regex_constants::error_stack" link="cpp/regex/error_type"/>

    <!-- cpp/atomic -->

    <class name="std::atomic" link="cpp/atomic/atomic">
        <constructor/>
        <function name="operator="/>
        <function name="is_lock_free"/>
        <function name="store"/>
        <function name="load"/>
        <function name="operator T" link="operator_T"/>
        <function name="exchange"/>
        <function name="compare_exchange_strong" link="compare_exchange"/>
        <function name="compare_exchange_weak" link="compare_exchange"/>

        <function name="fetch_add"/>
        <function name="fetch_sub"/>
        <function name="fetch_and"/>
        <function name="fetch_or"/>
        <function name="fetch_xor"/>

        <function name="operator++" link="operator_arith"/>
        <function name="operator++(int)" link="operator_arith"/>
        <function name="operator--" link="operator_arith"/>
        <function name="operator--(int)" link="operator_arith"/>

        <function name="operator+=" link="operator_arith2"/>
        <function name="operator-=" link="operator_arith2"/>
        <function name="operator&amp;=" link="operator_arith2"/>
        <function name="operator|=" link="operator_arith2"/>
        <function name="operator^=" link="operator_arith2"/>
    </class>

    <function name="std::atomic_is_lock_free" link="cpp/atomic/atomic_is_lock_free"/>

    <function name="std::atomic_store" link="cpp/atomic/atomic_store"/>
    <function name="std::atomic_store_explicit" link="cpp/atomic/atomic_store"/>

    <function name="std::atomic_load" link="cpp/atomic/atomic_load"/>
    <function name="std::atomic_load_explicit" link="cpp/atomic/atomic_load"/>

    <function name="std::atomic_exchange" link="cpp/atomic/atomic_exchange"/>
    <function name="std::atomic_exchange_explicit" link="cpp/atomic/atomic_exchange"/>

    <function name="std::atomic_compare_exchange_weak" link="cpp/atomic/atomic_compare_exchange"/>
    <function name="std::atomic_compare_exchange_weak_explicit" link="cpp/atomic/atomic_compare_exchange"/>
    <function name="std::atomic_compare_exchange_strong" link="cpp/atomic/atomic_compare_exchange"/>
    <function name="std::atomic_compare_exchange_strong_explicit" link="cpp/atomic/atomic_compare_exchange"/>

    <function name="std::atomic_fetch_add" link="cpp/atomic/atomic_fetch_add"/>
    <function name="std::atomic_fetch_add_explicit" link="cpp/atomic/atomic_fetch_add"/>

    <function name="std::atomic_fetch_sub" link="cpp/atomic/atomic_fetch_sub"/>
    <function name="std::atomic_fetch_sub_explicit" link="cpp/atomic/atomic_fetch_sub"/>

    <function name="std::atomic_fetch_and" link="cpp/atomic/atomic_fetch_sub"/>
    <function name="std::atomic_fetch_and_explicit" link="cpp/atomic/atomic_fetch_sub"/>

    <function name="std::atomic_fetch_or" link="cpp/atomic/atomic_fetch_or"/>
    <function name="std::atomic_fetch_or_explicit" link="cpp/atomic/atomic_fetch_or"/>

    <function name="std::atomic_fetch_xor" link="cpp/atomic/atomic_fetch_xor"/>
    <function name="std::atomic_fetch_xor_explicit" link="cpp/atomic/atomic_fetch_xor"/>

    <class name="std::atomic_flag" link="cpp/atomic/atomic_flag">
        <constructor/>
        <function name="operator="/>
        <function name="clear"/>
        <function name="test_and_set"/>
    </class>

    <function name="std::atomic_init" link="cpp/atomic/atomic_init"/>
    <function name="ATOMIC_VAR_INIT" link="cpp/atomic/ATOMIC_VAR_INIT"/>
    <enum name="ATOMIC_FLAG_INIT" link="cpp/atomic/ATOMIC_FLAG_INIT"/>

    <enum name="std::memory_order" link="cpp/atomic/memory_order"/>
    <const name="std::memory_order_relaxed" link="cpp/atomic/memory_order"/>
    <const name="std::memory_order_consume" link="cpp/atomic/memory_order"/>
    <const name="std::memory_order_acquire" link="cpp/atomic/memory_order"/>
    <const name="std::memory_order_release" link="cpp/atomic/memory_order"/>
    <const name="std::memory_order_acq_rel" link="cpp/atomic/memory_order"/>
    <const name="std::memory_order_seq_cst" link="cpp/atomic/memory_order"/>

    <function name="std::kill_dependency" link="cpp/atomic/kill_dependency"/>
    <function name="std::atomic_thread_fence" link="cpp/atomic/atomic_thread_fence"/>
    <function name="std::atomic_signal_fence" link="cpp/atomic/atomic_signal_fence"/>

    <!-- cpp/thread -->

    <class name="std::thread" link="cpp/thread/thread">
        <constructor/>
        <destructor/>
        <function name="operator="/>

        <function name="joinable"/>
        <function name="get_id"/>
        <function name="native_handle"/>
        <function name="hardware_concurrency"/>

        <function name="join"/>
        <function name="detach"/>
        <function name="swap"/>

        <overload name="std::swap" link="swap2"/>
    </class>

    <class name="std::thread::id" link="cpp/thread/thread/id">
        <constructor/>
        <function name="operator==" link="operator_cmp"/>
        <function name="operator!=" link="operator_cmp"/>
        <function name="operator&lt;" link="operator_cmp"/>
        <function name="operator&lt;=" link="operator_cmp"/>
        <function name="operator&gt;" link="operator_cmp"/>
        <function name="operator&gt;=" link="operator_cmp"/>
        <function name="operator&lt;&lt;" link="operator_ltlt"/>

        <specialization name="std::hash" link="hash"/>
    </class>

    <function name="std::this_thread::get_id" link="cpp/thread/get_id"/>
    <function name="std::this_thread::sleep_for" link="cpp/thread/sleep_for"/>
    <function name="std::this_thread::sleep_until" link="cpp/thread/sleep_until"/>
    <function name="std::this_thread::yield" link="cpp/thread/yield"/>

    <class name="std::mutex" link="cpp/thread/mutex">
        <constructor/>
        <function name="lock"/>
        <function name="try_lock"/>
        <function name="unlock"/>
        <function name="native_handle"/>
    </class>

    <class name="std::recursive_mutex" link="cpp/thread/recursive_mutex">
        <constructor/>
        <function name="lock"/>
        <function name="try_lock"/>
        <function name="unlock"/>
        <function name="native_handle"/>
    </class>

    <class name="std::timed_mutex" link="cpp/thread/timed_mutex">
        <constructor/>
        <function name="lock"/>
        <function name="try_lock"/>
        <function name="try_lock_for"/>
        <function name="try_lock_until"/>
        <function name="unlock"/>
        <function name="native_handle"/>
    </class>

    <class name="std::recursive_timed_mutex" link="cpp/thread/recursive_timed_mutex">
        <constructor/>
        <function name="lock"/>
        <function name="try_lock"/>
        <function name="try_lock_for"/>
        <function name="try_lock_until"/>
        <function name="unlock"/>
        <function name="native_handle"/>
    </class>

    <class name="std::shared_timed_mutex" link="cpp/thread/shared_timed_mutex" since="c++14">
        <constructor/>
        <function name="lock"/>
        <function name="try_lock"/>
        <function name="try_lock_for"/>
        <function name="try_lock_until"/>
        <function name="unlock"/>

        <function name="lock_shared"/>
        <function name="try_lock_shared"/>
        <function name="try_lock_shared_for"/>
        <function name="try_lock_shared_until"/>
        <function name="unlock_shared"/>
    </class>

    <class name="std::defer_lock_t" link="cpp/thread/lock_tag_t"/>
    <class name="std::try_to_lock_t" link="cpp/thread/lock_tag_t"/>
    <class name="std::adopt_lock_t" link="cpp/thread/lock_tag_t"/>

    <const name="std::defer_lock" link="cpp/thread/lock_tag"/>
    <const name="std::try_to_lock" link="cpp/thread/lock_tag"/>
    <const name="std::adopt_lock" link="cpp/thread/lock_tag"/>

    <class name="std::lock_guard" link="cpp/thread/lock_guard">
        <constructor/>
        <destructor/>
    </class>

    <class name="std::unique_lock" link="cpp/thread/unique_lock">
        <constructor/>
        <destructor/>
        <function name="operator="/>

        <function name="lock"/>
        <function name="try_lock"/>
        <function name="try_lock_for"/>
        <function name="try_lock_until"/>
        <function name="unlock"/>

        <function name="swap"/>
        <function name="release"/>

        <function name="mutex"/>
        <function name="owns_lock"/>
        <function name="operator bool" link="operator_bool"/>

        <overload name="std::swap" link="swap2"/>
    </class>

    <class name="std::shared_lock" link="cpp/thread/shared_lock" since="c++14">
        <constructor/>
        <destructor/>
        <function name="operator="/>

        <function name="lock"/>
        <function name="try_lock"/>
        <function name="try_lock_for"/>
        <function name="try_lock_until"/>
        <function name="unlock"/>

        <function name="swap"/>
        <function name="release"/>

        <function name="mutex"/>
        <function name="owns_lock"/>
        <function name="operator bool" link="operator_bool"/>

        <overload name="std::swap" link="swap2"/>
    </class>

    <function name="std::lock" link="cpp/thread/lock"/>
    <function name="std::try_lock" link="cpp/thread/try_lock"/>

    <class name="std::condition_variable" link="cpp/thread/condition_variable">
        <constructor/>
        <destructor/>

        <function name="notify_one"/>
        <function name="notify_all"/>

        <function name="wait"/>
        <function name="wait_for"/>
        <function name="wait_until"/>

        <function name="native_handle"/>
    </class>

    <class name="std::condition_variable_any" link="cpp/thread/condition_variable_any">
        <constructor/>
        <destructor/>

        <function name="notify_one"/>
        <function name="notify_all"/>

        <function name="wait"/>
        <function name="wait_for"/>
        <function name="wait_until"/>

        <function name="native_handle"/>
    </class>

    <function name="std::notify_all_at_thread_exit" link="cpp/thread/notify_all_at_thread_exit"/>

    <class name="std::once_flag" link="cpp/thread/once_flag">
        <constructor link="."/>
    </class>
    <function name="std::call_once" link="cpp/thread/call_once"/>

    <enum name="std::cv_status" link="cpp/thread/cv_status">
        <const name="no_timeout" link="."/>
        <const name="timeout" link="."/>
    </enum>

    <class name="std::promise" link="cpp/thread/promise">
        <constructor/>
        <destructor/>
        <function name="operator="/>
        <function name="swap"/>
        <function name="get_future"/>
        <function name="set_value"/>
        <function name="set_value_at_thread_exit"/>
        <function name="set_exception"/>
        <function name="set_exception_at_thread_exit"/>

        <specialization name="std::uses_allocator" link="uses_allocator"/>
    </class>

    <class name="std::future" link="cpp/thread/future">
        <constructor/>
        <destructor/>
        <function name="operator="/>
        <function name="share"/>
        <function name="get"/>

        <function name="valid"/>
        <function name="wait"/>
        <function name="wait_for"/>
        <function name="wait_until"/>
    </class>

    <class name="std::shared_future" link="cpp/thread/shared_future">
        <constructor/>
        <destructor/>
        <function name="operator="/>
        <function name="get"/>

        <function name="valid"/>
        <function name="wait"/>
        <function name="wait_for"/>
        <function name="wait_until"/>
    </class>

    <function name="std::future_category" link="cpp/thread/future/future_category"/>

    <class name="std::packaged_task" link="cpp/thread/packaged_task">
        <constructor/>
        <destructor/>
        <function name="operator="/>
        <function name="valid"/>
        <function name="swap"/>

        <function name="get_future"/>
        <function name="operator()"/>
        <function name="make_ready_at_thread_exit"/>
        <function name="reset"/>

        <specialization name="std::uses_allocator" link="uses_allocator"/>
    </class>

    <function name="std::async" link="cpp/thread/async"/>

    <enum name="std::launch" link="cpp/thread/launch">
        <const name="async" link="."/>
        <const name="deferred" link="."/>
    </enum>

    <enum name="std::future_status" link="cpp/thread/future_status">
        <const name="ready" link="."/>
        <const name="timeout" link="."/>
        <const name="deferred" link="."/>
    </enum>

    <class name="std::future_error" link="cpp/thread/future_error">
        <inherits name="std::logic_error"/>
        <constructor/>
        <function name="code"/>
        <function name="what"/>
    </class>

    <function name="std::future_category" link="cpp/thread/future_category"/>

    <enum name="std::future_errc" link="cpp/thread/future_errc">
        <const name="broken_promise" link="."/>
        <const name="future_already_retrieved" link="."/>
        <const name="promise_already_satisfied" link="."/>
        <const name="no_state" link="."/>

        <specialization name="std::is_error_code_enum" link="is_error_code_enum"/>
        <overload name="std::make_error_code" link="make_error_code"/>
        <overload name="std::make_error_condition" link="make_error_condition"/>
    </enum>

</index>
