<?xml version="1.0" encoding="UTF-8"?>
<mrdocs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:noNamespaceSchemaLocation="https://github.com/cppalliance/mrdocs/raw/develop/mrdocs.rnc">
<namespace id="//////////////////////////8=">
  <namespace name="beman" id="j5k/YyjWpJ+nEAURNJqD22JcYh0=">
    <namespace name="optional" id="a5kXR3ZLcgojav1V+kZ4pHxrrv8=">
      <namespace name="detail" id="5HzEsKRzStyLkoUmcy9wOt1Mb4o=">
        <doc>
          <brief>
            <text>END </text>
            <text>[</text>
            <text>optional.syn</text>
            <text>]</text>
          </brief>
          <para>
            <bold/>
            <bold/>
            <bold/>
            <text>*</text>
          </para>
        </doc>
      </namespace>
      <class name="bad_optional_access" id="tC7EcjLfvgsszvp353seh2iQR5Q=">
        <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="743" class="def"/>
        <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="119"/>
        <base>
          <type id="pAlZtrYeltB3G25UdChuBKvYgR4=" name="std::exception"/>
        </base>
        <doc>
          <brief>
            <text>Exception thrown when trying to access the value of an empty optional</text>
          </brief>
        </doc>
        <function class="constructor" name="bad_optional_access" id="QdRJS2LYEGtCR5OVq6ODV0IkPhI=">
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="749" class="def"/>
          <attr id="is-defaulted"/>
          <attr id="is-explicitly-defaulted"/>
          <attr id="constexpr-kind" name="constexpr" value="1"/>
          <doc>
            <brief>
              <text>Construct a new bad optional access object</text>
            </brief>
          </doc>
        </function>
        <function name="operator=" exception-spec="noexcept" id="2XS5rENVk//w0+B6JjDmKiHYrzQ=">
          <file short-path="__exception/exception.h" source-path="" line="76" class="def"/>
          <attr id="is-defaulted"/>
          <attr id="is-explicitly-defaulted"/>
          <attr id="constexpr-kind" name="constexpr" value="1"/>
          <attr id="operator" name="assign" value="14"/>
          <return>
            <type class="lvalue-reference">
              <pointee-type id="pAlZtrYeltB3G25UdChuBKvYgR4=" name="exception"/>
            </type>
          </return>
          <param name="value">
            <type class="lvalue-reference">
              <pointee-type id="pAlZtrYeltB3G25UdChuBKvYgR4=" name="exception" cv-qualifiers="const"/>
            </type>
          </param>
        </function>
        <function name="what" exception-spec="noexcept" id="peMp+VnFMWLhTr406DNCmfs5tIw=">
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="756" class="def"/>
          <attr id="is-const"/>
          <return>
            <type class="pointer">
              <pointee-type name="char" cv-qualifiers="const"/>
            </type>
          </return>
          <doc>
            <brief>
              <text>Get the error message for bad optional access</text>
            </brief>
            <returns>
              <text>const char*</text>
            </returns>
          </doc>
        </function>
      </class>
      <template>
        <tparam name="T" class="type"/>
        <struct name="hash" id="Vpj8goNubRMMkKZkCWqx9y29CpE=">
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="211"/>
        </struct>
      </template>
      <template class="partial" id="Vpj8goNubRMMkKZkCWqx9y29CpE=">
        <tparam name="T" class="type"/>
        <targ class="type" type="optional&lt;T&gt;"/>
        <struct name="hash" id="UdmBqXRl0thGIejshDKsMaTMHgU=">
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="214"/>
        </struct>
      </template>
      <struct name="in_place_t" id="mwtFNA7SiRZ2GcsbxvFhVCUxbJs=">
        <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="64" class="def"/>
        <doc>
          <brief>
            <text>Tag type for in place construction</text>
          </brief>
        </doc>
        <function class="constructor" name="in_place_t" explicit-spec="explicit" id="QTwHaQRaRJnLs7uXs46XinCKJnc=">
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="65" class="def"/>
          <attr id="is-defaulted"/>
          <attr id="is-explicitly-defaulted"/>
          <attr id="constexpr-kind" name="constexpr" value="1"/>
          <doc>
            <brief>
              <text>Default constructor</text>
            </brief>
          </doc>
        </function>
      </struct>
      <struct name="nullopt_t" id="qm9ez48c7jM2APsMBjONlFHv85U=">
        <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="101" class="def"/>
        <doc>
          <brief>
            <text>Tag type for nullopt construction</text>
          </brief>
        </doc>
        <enum name="Tag" class="scoped" id="ufNY4Im1hPXv6iQ60Eda4V5/Zh8=">
          <base>
            <type name="int"/>
          </base>
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="105" class="def"/>
          <doc>
            <brief>
              <text>Tag type for nullopt_t construction</text>
            </brief>
          </doc>
          <enum-constant name="tag" initializer="0" id="JRw78BAL+lUDtNt6Ic06L50Zg0c=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="105"/>
          </enum-constant>
        </enum>
        <function class="constructor" name="nullopt_t" exception-spec="noexcept" explicit-spec="explicit" id="h17CgkpzRygtmAYcTitKNi6Hem0=">
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="112" class="def"/>
          <attr id="constexpr-kind" name="constexpr" value="1"/>
          <param name="value">
            <type id="ufNY4Im1hPXv6iQ60Eda4V5/Zh8=" name="Tag"/>
          </param>
          <doc>
            <brief>
              <text>Construct a new nullopt_t object</text>
            </brief>
            <para>
              <text>constexpr for nullopt_t to be literal.</text>
            </para>
            <param name="value">
              <text>The object to construct from</text>
            </param>
          </doc>
        </function>
      </struct>
      <template>
        <tparam name="T" class="type"/>
        <class name="optional" id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=">
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="263" class="def"/>
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="73"/>
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="732"/>
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1830"/>
          <friend id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=">
            <befriended id="Pvkqsm2J3WYxmvM1xBy22WjfJxg="/>
          </friend>
          <doc>
            <related>
              <reference id="2G159R1+8b1xkOK9u3FF3QDcAUY=">operator!=</reference>
              <reference id="60GHDiC6o64xbYKp83E3A5iPrhE=">operator!=</reference>
              <reference id="jqNZVersCFRVodB+gdVnvZn9RP4=">operator&lt;</reference>
              <reference id="1H2o8wwBLBtfWFOcBX54+6RBLVU=">operator&lt;</reference>
              <reference id="FWQR8LQnPEO5+/SRa8W4Zc4jDlQ=">operator&lt;=</reference>
              <reference id="+NwYIqZvYZCJp+QAWW6cbbSYqVU=">operator&lt;=</reference>
              <reference id="ALNR0WlTuqs/eQj6xIW2qGvA1zM=">operator&lt;=&gt;</reference>
              <reference id="IfkDVJSV2flpvCynxbI2epwCDok=">operator&lt;=&gt;</reference>
              <reference id="oZ/Q3kZAAYQO6muhk5IE/0cosl8=">operator&lt;=&gt;</reference>
              <reference id="ATfH0MV8EAQE6oE3e2OWsJsXhbs=">operator==</reference>
              <reference id="h5L6UUxvyCnZSKXkcV9/2OpLB10=">operator==</reference>
              <reference id="ldpyPTVm1Y7c/9DQKi74IcVueYs=">operator==</reference>
              <reference id="hMFh4M52EIPFjJB+10a7s1LJuzw=">operator&gt;</reference>
              <reference id="0xp8ORXBP85+U8pJtrI9nkQUumg=">operator&gt;</reference>
              <reference id="CzwIKHqqfNwhTTh8LWJ/LcPwrTA=">operator&gt;=</reference>
              <reference id="8yrDHvDuwqixD59O2cuFDo+EtbE=">operator&gt;=</reference>
            </related>
          </doc>
          <namespace-alias name="const_iterator" id="PTkL6Kye5WLULoeW2qEaaj0NXeI=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="288"/>
            <type id="CCKBr7Trw4NFH3nVTXCf/PBYKig=" name="detail::contiguous_iterator&lt;const T, optional&gt;"/>
            <doc>
              <brief>
                <text>Type alias for the const iterator type of the optional.</text>
              </brief>
              <para>
                <text>Since P3168R2: Give std::optional Range Support.</text>
              </para>
            </doc>
          </namespace-alias>
          <namespace-alias name="iterator" id="6P/n8yO8YGsPi3WuM00zv1eh5tY=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="281"/>
            <type id="CCKBr7Trw4NFH3nVTXCf/PBYKig=" name="detail::contiguous_iterator&lt;T, optional&gt;"/>
            <doc>
              <brief>
                <text>Type alias for the iterator type of the optional.</text>
              </brief>
              <para>
                <text>Since P3168R2: Give std::optional Range Support.</text>
              </para>
            </doc>
          </namespace-alias>
          <namespace-alias name="value_type" id="9cDFxG5Sry1wrYATso2RP3ExqPM=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="274"/>
            <type name="T"/>
            <doc>
              <brief>
                <text>Type alias for the value type stored in the optional.</text>
              </brief>
            </doc>
          </namespace-alias>
          <function class="constructor" name="optional" exception-spec="noexcept" id="Zhjc/C178ql0VoS0WbGc63PBiZs=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="760" class="def"/>
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="296"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <doc>
              <brief>
                <text>Default constructs an empty optional.</text>
              </brief>
            </doc>
          </function>
          <function class="constructor" name="optional" requires="std::is_copy_constructible_v&lt;T&gt; &amp;&amp; std::is_trivially_copy_constructible_v&lt;T&gt;" id="bKq1AF+Kqr5E1zby//xLZ/vtdz0=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="314" class="def"/>
            <attr id="is-defaulted"/>
            <attr id="is-explicitly-defaulted"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <param name="other">
              <type class="lvalue-reference">
                <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional" cv-qualifiers="const"/>
              </type>
            </param>
            <doc>
              <brief>
                <text>Copy constructs the value from </text>
                <mono>rhs</mono>
                <text> if it has one.</text>
              </brief>
              <para>
                <text>Defaulted if T is trivially copy constructible.</text>
              </para>
              <param name="other">
                <text>The object to copy construct from</text>
              </param>
            </doc>
          </function>
          <function class="constructor" name="optional" requires="std::is_copy_constructible_v&lt;T&gt; &amp;&amp; (!std::is_trivially_copy_constructible_v&lt;T&gt;)" id="zjwlTzPSGuDcl1XH3xBpPP3Iyao=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="766" class="def"/>
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="308"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <param name="rhs">
              <type class="lvalue-reference">
                <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional" cv-qualifiers="const"/>
              </type>
            </param>
            <doc>
              <brief>
                <text>Copy constructs the value from </text>
                <mono>rhs</mono>
                <text> if it has one.</text>
              </brief>
              <param name="rhs">
                <text>The object to copy construct from</text>
              </param>
            </doc>
          </function>
          <template>
            <tparam name="U" class="type"/>
            <function class="constructor" name="optional" explicit-spec="explicit(!std::is_convertible_v&lt;U, T&gt;)" requires="(detail::enable_from_other&lt;T, U, const U&amp;&gt;)" id="Srnj0nZvtQ0Vg6tuFkyHkrxRq0A=">
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="806" class="def"/>
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="358"/>
              <attr id="constexpr-kind" name="constexpr" value="1"/>
              <param name="rhs">
                <type class="lvalue-reference">
                  <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;U&gt;" cv-qualifiers="const"/>
                </type>
              </param>
              <doc>
                <brief>
                  <text>Constructs the value from </text>
                  <mono>rhs</mono>
                  <text> if it has one.</text>
                </brief>
                <para>
                  <text>Converting copy constructor.</text>
                </para>
                <param name="rhs">
                  <text>The object to copy construct from</text>
                </param>
              </doc>
            </function>
          </template>
          <function class="constructor" name="optional" requires="std::is_move_constructible_v&lt;T&gt; &amp;&amp; std::is_trivially_move_constructible_v&lt;T&gt;" id="VlioDaayzdTPTqtW3i1MjotUJ0Q=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="326" class="def"/>
            <attr id="is-defaulted"/>
            <attr id="is-explicitly-defaulted"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <param name="other">
              <type class="rvalue-reference">
                <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional"/>
              </type>
            </param>
            <doc>
              <brief>
                <text>Move constructs the value from </text>
                <mono>rhs</mono>
                <text> if it has one.</text>
              </brief>
              <para>
                <text>Defaulted if T is trivially move constructible.</text>
              </para>
              <param name="other">
                <text>The object to move construct from</text>
              </param>
            </doc>
          </function>
          <function class="constructor" name="optional" exception-spec="noexcept(std::is_nothrow_move_constructible_v&lt;T&gt;)" requires="std::is_move_constructible_v&lt;T&gt; &amp;&amp; (!std::is_trivially_move_constructible_v&lt;T&gt;)" id="tjPjq+UzTo5gunm94e3lfvW+Z+s=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="775" class="def"/>
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="320"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <param name="rhs">
              <type class="rvalue-reference">
                <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional"/>
              </type>
            </param>
            <doc>
              <brief>
                <text>Move constructs the value from </text>
                <mono>rhs</mono>
                <text> if it has one.</text>
              </brief>
              <param name="rhs">
                <text>The object to move construct from</text>
              </param>
            </doc>
          </function>
          <template>
            <tparam name="U" class="type"/>
            <function class="constructor" name="optional" explicit-spec="explicit(!std::is_convertible_v&lt;U, T&gt;)" requires="(detail::enable_from_other&lt;T, U, U &amp;&amp;&gt;)" id="bmNRp4gaMqyt7FQwM2uJmG9eYcY=">
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="817" class="def"/>
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="365"/>
              <attr id="constexpr-kind" name="constexpr" value="1"/>
              <param name="rhs">
                <type class="rvalue-reference">
                  <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;U&gt;"/>
                </type>
              </param>
              <doc>
                <brief>
                  <text>Constructs the value from </text>
                  <mono>rhs</mono>
                  <text> if it has one.</text>
                </brief>
                <para>
                  <text>Converting move constructor.</text>
                </para>
                <param name="rhs">
                  <text>The object to move construct from</text>
                </param>
              </doc>
            </function>
          </template>
          <function class="constructor" name="optional" exception-spec="noexcept" id="Qy6ehjKGaqZ4DYsbt/Aqg0LzFzU=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="763" class="def"/>
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="302"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <param name="value">
              <type id="qm9ez48c7jM2APsMBjONlFHv85U=" name="nullopt_t"/>
            </param>
            <doc>
              <brief>
                <text>Constructs an empty optional.</text>
              </brief>
              <param name="value">
                <text>The object to construct from</text>
              </param>
            </doc>
          </function>
          <template>
            <tparam name="U" class="type" default="T"/>
            <function class="constructor" name="optional" explicit-spec="explicit(!std::is_convertible_v&lt;U, T&gt;)" requires="detail::enable_forward_value&lt;T, U&gt;" id="CQaBRu9zdyHdATIkvGyP50Saa1A=">
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="799" class="def"/>
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="349"/>
              <attr id="constexpr-kind" name="constexpr" value="1"/>
              <param name="u">
                <type class="rvalue-reference">
                  <pointee-type name="U"/>
                </type>
              </param>
              <doc>
                <brief>
                  <text>Constructs the value from </text>
                  <mono>u,</mono>
                  <text> forwarding it if necessary.</text>
                </brief>
                <para>
                  <text>If </text>
                  <mono>u</mono>
                  <text> is convertible to </text>
                  <mono>T,</mono>
                  <text> this is an explicit constructor.</text>
                </para>
                <para>
                  <text>Constructs the stored value with </text>
                  <mono>u</mono>
                  <text>.</text>
                </para>
                <param name="u">
                  <text>The object to move construct from</text>
                </param>
              </doc>
            </function>
          </template>
          <template>
            <tparam name="Args" class="type"/>
            <function class="constructor" name="optional" explicit-spec="explicit" requires="std::is_constructible_v&lt;T, Args...&gt;" id="KnG9lJXbUtQ6Ml1KAXAYNGMcF0c=">
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="786" class="def"/>
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="333"/>
              <attr id="constexpr-kind" name="constexpr" value="1"/>
              <param>
                <type id="mwtFNA7SiRZ2GcsbxvFhVCUxbJs=" name="in_place_t"/>
              </param>
              <param name="args">
                <type class="rvalue-reference" is-pack="1">
                  <pointee-type is-pack="1" name="Args"/>
                </type>
              </param>
              <doc>
                <brief>
                  <text>Constructs the value in-place using the given arguments.</text>
                </brief>
                <para>
                  <text>Constructs the stored value in-place using the given arguments.</text>
                </para>
              </doc>
            </function>
          </template>
          <template>
            <tparam name="U" class="type"/>
            <tparam name="Args" class="type"/>
            <function class="constructor" name="optional" explicit-spec="explicit" requires="std::is_constructible_v&lt;T, std::initializer_list&lt;U&gt;&amp;, Args&amp;&amp;...&gt;" id="f0M4hRrue0gdE2D1UxzRPEsJB9Q=">
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="792" class="def"/>
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="340"/>
              <attr id="constexpr-kind" name="constexpr" value="1"/>
              <param>
                <type id="mwtFNA7SiRZ2GcsbxvFhVCUxbJs=" name="in_place_t"/>
              </param>
              <param name="il">
                <type id="3tT5Y8vozttMWXrA/fNw4NcDYTE=" name="std::initializer_list&lt;U&gt;"/>
              </param>
              <param name="args">
                <type class="rvalue-reference" is-pack="1">
                  <pointee-type is-pack="1" name="Args"/>
                </type>
              </param>
              <doc>
                <brief>
                  <text>Constructs the value in-place using the given arguments.</text>
                </brief>
              </doc>
            </function>
          </template>
          <function class="destructor" name="~optional" requires="std::is_trivially_destructible_v&lt;T&gt;" id="tNWsjIl4//E01XnPER/rOsCvKcQ=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="374" class="def"/>
            <attr id="is-defaulted"/>
            <attr id="is-explicitly-defaulted"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <doc>
              <brief>
                <text>Destructs the optional.</text>
              </brief>
            </doc>
          </function>
          <function class="destructor" name="~optional" requires="(!std::is_trivially_destructible_v&lt;T&gt;)" id="6gKCYxiLeMGhYhMv5DhlEhY4My0=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="828" class="def"/>
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="381"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <doc>
              <brief>
                <text>Destroys the optional and its value if it has one.</text>
              </brief>
            </doc>
          </function>
          <function name="operator=" requires="std::is_copy_constructible_v&lt;T&gt; &amp;&amp; std::is_copy_assignable_v&lt;T&gt; &amp;&amp;
                     std::is_trivially_copy_constructible_v&lt;T&gt; &amp;&amp; std::is_trivially_copy_assignable_v&lt;T&gt;" id="YXp2p9DjakNd/Nfgc/Eokq4VaDk=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="402" class="def"/>
            <attr id="is-defaulted"/>
            <attr id="is-explicitly-defaulted"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <attr id="operator" name="assign" value="14"/>
            <return>
              <type class="lvalue-reference">
                <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional"/>
              </type>
            </return>
            <param name="other">
              <type class="lvalue-reference">
                <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional" cv-qualifiers="const"/>
              </type>
            </param>
            <doc>
              <brief>
                <text>Copy assigns the value from </text>
                <mono>rhs</mono>
                <text> if it has one.</text>
              </brief>
              <returns>
                <text>optional&amp;</text>
              </returns>
              <param name="other">
                <text>The object to copy assign from</text>
              </param>
            </doc>
          </function>
          <function name="operator=" requires="std::is_copy_constructible_v&lt;T&gt; &amp;&amp; std::is_copy_assignable_v&lt;T&gt; &amp;&amp;
             (!std::is_trivially_copy_assignable_v&lt;T&gt;)" id="k8cdSVuTO7L981AeVsi5iVPuWvQ=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="844" class="def"/>
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="393"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <attr id="operator" name="assign" value="14"/>
            <return>
              <type class="lvalue-reference">
                <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;T&gt;"/>
              </type>
            </return>
            <param name="rhs">
              <type class="lvalue-reference">
                <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional" cv-qualifiers="const"/>
              </type>
            </param>
            <doc>
              <brief>
                <text>Copy assigns the value from </text>
                <mono>rhs</mono>
                <text> if it has one.</text>
              </brief>
              <returns>
                <text>Reference to the current object</text>
              </returns>
              <param name="rhs">
                <text>The object to copy assign from</text>
              </param>
            </doc>
          </function>
          <template>
            <tparam name="U" class="type"/>
            <function name="operator=" requires="(detail::enable_assign_from_other&lt;T, U, const U&amp;&gt;)" id="gCgVIPTPPbmIn0fBP9VnLAlxElg=">
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="894" class="def"/>
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="437"/>
              <attr id="constexpr-kind" name="constexpr" value="1"/>
              <attr id="operator" name="assign" value="14"/>
              <return>
                <type class="lvalue-reference">
                  <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;T&gt;"/>
                </type>
              </return>
              <param name="rhs">
                <type class="lvalue-reference">
                  <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;U&gt;" cv-qualifiers="const"/>
                </type>
              </param>
              <doc>
                <brief>
                  <text>Assigns the stored value from </text>
                  <mono>rhs</mono>
                  <text> if it has one, destroying the old value if there</text>
                </brief>
                <para>
                  <text>Converting copy assignment operator.</text>
                </para>
                <para>
                  <text>Copies the value from </text>
                  <mono>rhs</mono>
                  <text> if there is one. Otherwise resets the stored value in </text>
                  <mono>*this</mono>
                  <text>.</text>
                </para>
                <returns>
                  <text>Reference to the current object</text>
                </returns>
                <param name="rhs">
                  <text>The object to copy assign from</text>
                </param>
              </doc>
            </function>
          </template>
          <function name="operator=" requires="std::is_move_constructible_v&lt;T&gt; &amp;&amp; std::is_move_assignable_v&lt;T&gt; &amp;&amp;
                     std::is_trivially_move_constructible_v&lt;T&gt; &amp;&amp; std::is_trivially_move_assignable_v&lt;T&gt;" id="3EIpANtjbuOdwW0BfFALQwwM3+Q=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="417" class="def"/>
            <attr id="is-defaulted"/>
            <attr id="is-explicitly-defaulted"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <attr id="operator" name="assign" value="14"/>
            <return>
              <type class="lvalue-reference">
                <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional"/>
              </type>
            </return>
            <param name="other">
              <type class="rvalue-reference">
                <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional"/>
              </type>
            </param>
            <doc>
              <brief>
                <text>Move assigns the value from </text>
                <mono>rhs</mono>
                <text> if it has one.</text>
              </brief>
              <returns>
                <text>Reference to the current object</text>
              </returns>
              <param name="other">
                <text>The object to move assign from</text>
              </param>
            </doc>
          </function>
          <function name="operator=" exception-spec="noexcept(std::is_nothrow_move_constructible_v&lt;T&gt;)" requires="std::is_move_constructible_v&lt;T&gt; &amp;&amp; std::is_move_assignable_v&lt;T&gt; &amp;&amp;
             (!std::is_trivially_move_assignable_v&lt;T&gt;)" id="uH7ciUxmBTttG/DqP2YZ3+8X2Ck=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="858" class="def"/>
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="410"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <attr id="operator" name="assign" value="14"/>
            <return>
              <type class="lvalue-reference">
                <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;T&gt;"/>
              </type>
            </return>
            <param name="rhs">
              <type class="rvalue-reference">
                <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional"/>
              </type>
            </param>
            <doc>
              <brief>
                <text>Move assigns the value from </text>
                <mono>rhs</mono>
                <text> if it has one.</text>
              </brief>
              <returns>
                <text>Reference to the current object</text>
              </returns>
              <param name="rhs">
                <text>The object to move assign from</text>
              </param>
            </doc>
          </function>
          <template>
            <tparam name="U" class="type"/>
            <function name="operator=" requires="(detail::enable_assign_from_other&lt;T, U, U&gt;)" id="eL7IMxbcyX+8S5/QHpN3PO9McYA=">
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="918" class="def"/>
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="444"/>
              <attr id="constexpr-kind" name="constexpr" value="1"/>
              <attr id="operator" name="assign" value="14"/>
              <return>
                <type class="lvalue-reference">
                  <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;T&gt;"/>
                </type>
              </return>
              <param name="rhs">
                <type class="rvalue-reference">
                  <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;U&gt;"/>
                </type>
              </param>
              <doc>
                <brief>
                  <text>Assigns the stored value from </text>
                  <mono>rhs</mono>
                  <text> if it has one, destroying the old value if there</text>
                </brief>
                <para>
                  <text>Converting move assignment operator.</text>
                </para>
                <para>
                  <text>Moves the value from </text>
                  <mono>rhs</mono>
                  <text> if there is one. Otherwise resets the stored value in </text>
                  <mono>*this</mono>
                  <text>.</text>
                </para>
                <returns>
                  <text>Reference to the current object</text>
                </returns>
                <param name="rhs">
                  <text>The object to move assign from</text>
                </param>
              </doc>
            </function>
          </template>
          <function name="operator=" exception-spec="noexcept" id="9TJuUJPhuRU5eLJWznHZWhzNts4=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="838" class="def"/>
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="388"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <attr id="operator" name="assign" value="14"/>
            <return>
              <type class="lvalue-reference">
                <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;T&gt;"/>
              </type>
            </return>
            <param name="value">
              <type id="qm9ez48c7jM2APsMBjONlFHv85U=" name="nullopt_t"/>
            </param>
            <doc>
              <brief>
                <text>Resets the optional to an empty state.</text>
              </brief>
              <returns>
                <text>Reference to the current object</text>
              </returns>
              <param name="value">
                <text>The object to assign from</text>
              </param>
            </doc>
          </function>
          <template>
            <tparam name="U" class="type" default="T"/>
            <function name="operator=" requires="detail::enable_assign_forward&lt;T, U&gt;" id="toQhTlIOSw5rtEzgtk9m4yXc6Ww=">
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="876" class="def"/>
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="429"/>
              <attr id="constexpr-kind" name="constexpr" value="1"/>
              <attr id="operator" name="assign" value="14"/>
              <return>
                <type class="lvalue-reference">
                  <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;T&gt;"/>
                </type>
              </return>
              <param name="u">
                <type class="rvalue-reference">
                  <pointee-type name="U"/>
                </type>
              </param>
              <doc>
                <brief>
                  <text>Assigns the stored value from </text>
                  <mono>u,</mono>
                  <text> destroying the old value if there</text>
                </brief>
                <para>
                  <text>Assigns the stored value from </text>
                  <mono>u</mono>
                  <text>, destroying the old value if there was one.</text>
                </para>
                <returns>
                  <text>optional&amp;</text>
                </returns>
              </doc>
            </function>
          </template>
          <template>
            <tparam name="F" class="type"/>
            <function name="and_then" id="NA9XRom7f2CwVur50MWRMMXYC04=">
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1077" class="def"/>
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="598"/>
              <attr id="constexpr-kind" name="constexpr" value="1"/>
              <attr id="ref-qualifier" name="&amp;" value="1"/>
              <return>
                <type class="auto" keyword="auto">
                </type>
              </return>
              <param name="f">
                <type class="rvalue-reference">
                  <pointee-type name="F"/>
                </type>
              </param>
              <doc>
                <brief>
                  <text>Returns an optional containing the result of applying </text>
                  <mono>f</mono>
                  <text> to the stored value.</text>
                </brief>
                <returns>
                  <text>auto</text>
                </returns>
              </doc>
            </function>
          </template>
          <template>
            <tparam name="F" class="type"/>
            <function name="and_then" id="277WfRzfG5cxBIGCDqlVk7aOtiM=">
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1089" class="def"/>
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="608"/>
              <attr id="constexpr-kind" name="constexpr" value="1"/>
              <attr id="ref-qualifier" name="&amp;&amp;" value="2"/>
              <return>
                <type class="auto" keyword="auto">
                </type>
              </return>
              <param name="f">
                <type class="rvalue-reference">
                  <pointee-type name="F"/>
                </type>
              </param>
              <doc>
                <brief>
                  <text>Returns an optional containing the result of applying </text>
                  <mono>f</mono>
                  <text> to the stored value.</text>
                </brief>
                <returns>
                  <text>auto</text>
                </returns>
              </doc>
            </function>
          </template>
          <template>
            <tparam name="F" class="type"/>
            <function name="and_then" id="x2l1u6Fl4wvc6PLuvGqWXOdA5kg=">
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1101" class="def"/>
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="618"/>
              <attr id="constexpr-kind" name="constexpr" value="1"/>
              <attr id="is-const"/>
              <attr id="ref-qualifier" name="&amp;" value="1"/>
              <return>
                <type class="auto" keyword="auto">
                </type>
              </return>
              <param name="f">
                <type class="rvalue-reference">
                  <pointee-type name="F"/>
                </type>
              </param>
              <doc>
                <brief>
                  <text>Returns an optional containing the result of applying </text>
                  <mono>f</mono>
                  <text> to the stored value.</text>
                </brief>
                <returns>
                  <text>auto</text>
                </returns>
              </doc>
            </function>
          </template>
          <template>
            <tparam name="F" class="type"/>
            <function name="and_then" id="jTruTbGYnUR1HK3h5SHaQRNBdCI=">
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1113" class="def"/>
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="628"/>
              <attr id="constexpr-kind" name="constexpr" value="1"/>
              <attr id="is-const"/>
              <attr id="ref-qualifier" name="&amp;&amp;" value="2"/>
              <return>
                <type class="auto" keyword="auto">
                </type>
              </return>
              <param name="f">
                <type class="rvalue-reference">
                  <pointee-type name="F"/>
                </type>
              </param>
              <doc>
                <brief>
                  <text>Returns an optional containing the result of applying </text>
                  <mono>f</mono>
                  <text> to the stored value.</text>
                </brief>
                <returns>
                  <text>auto</text>
                </returns>
              </doc>
            </function>
          </template>
          <function name="begin" exception-spec="noexcept" id="pv+K7KnyySlPo3AQ76WIs7ePQZA=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="985" class="def"/>
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="481"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <return>
              <type id="6P/n8yO8YGsPi3WuM00zv1eh5tY=" name="optional&lt;T&gt;::iterator"/>
            </return>
            <doc>
              <brief>
                <text>Returns an iterator to the beginning of the optional.</text>
              </brief>
              <returns>
                <text>an iterator to the beginning of the optional.</text>
              </returns>
            </doc>
          </function>
          <function name="begin" exception-spec="noexcept" id="C5wvIvznNi22pgCxl7FBkGXcscQ=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="990" class="def"/>
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="488"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <attr id="is-const"/>
            <return>
              <type id="PTkL6Kye5WLULoeW2qEaaj0NXeI=" name="optional&lt;T&gt;::const_iterator"/>
            </return>
            <doc>
              <brief>
                <text>Returns a const iterator to the beginning of the optional.</text>
              </brief>
              <returns>
                <text>const_iterator</text>
              </returns>
            </doc>
          </function>
          <template>
            <tparam name="Args" class="type"/>
            <function name="emplace" id="SnAdjJOjL2qmtWOeZJ9YbDmpYds=">
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="940" class="def"/>
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="454"/>
              <attr id="constexpr-kind" name="constexpr" value="1"/>
              <return>
                <type class="lvalue-reference">
                  <pointee-type name="T"/>
                </type>
              </return>
              <param name="args">
                <type class="rvalue-reference" is-pack="1">
                  <pointee-type is-pack="1" name="Args"/>
                </type>
              </param>
              <doc>
                <brief>
                  <text>Constructs the value in-place, destroying the current one if there</text>
                </brief>
                <para>
                  <text>Constructs the value in-place, destroying the current one if there is one.</text>
                </para>
                <returns>
                  <text>T&amp;</text>
                </returns>
              </doc>
            </function>
          </template>
          <template>
            <tparam name="U" class="type"/>
            <tparam name="Args" class="type"/>
            <function name="emplace" id="grnlkdMGLaN7D0qVZcL705iZffs=">
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="949" class="def"/>
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="465"/>
              <attr id="constexpr-kind" name="constexpr" value="1"/>
              <return>
                <type class="lvalue-reference">
                  <pointee-type name="T"/>
                </type>
              </return>
              <param name="il">
                <type id="3tT5Y8vozttMWXrA/fNw4NcDYTE=" name="std::initializer_list&lt;U&gt;"/>
              </param>
              <param name="args">
                <type class="rvalue-reference" is-pack="1">
                  <pointee-type is-pack="1" name="Args"/>
                </type>
              </param>
              <doc>
                <brief>
                  <text>Constructs the value in-place using the given arguments, destroying the current one if there</text>
                </brief>
                <returns>
                  <text>T&amp;</text>
                </returns>
              </doc>
            </function>
          </template>
          <function name="end" exception-spec="noexcept" id="Ugv+ETWxMvjfi/e9XWjWACaLnFw=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="994" class="def"/>
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="493"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <return>
              <type id="6P/n8yO8YGsPi3WuM00zv1eh5tY=" name="optional&lt;T&gt;::iterator"/>
            </return>
            <doc>
              <brief>
                <text>Returns an iterator to the end of the optional.</text>
              </brief>
              <returns>
                <text>an iterator to the end of the optional.</text>
              </returns>
            </doc>
          </function>
          <function name="end" exception-spec="noexcept" id="Ls0HIy99miTA/QgUABSE+fQB7k8=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="999" class="def"/>
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="500"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <attr id="is-const"/>
            <return>
              <type id="PTkL6Kye5WLULoeW2qEaaj0NXeI=" name="optional&lt;T&gt;::const_iterator"/>
            </return>
            <doc>
              <brief>
                <text>Returns a const iterator to the end of the optional.</text>
              </brief>
              <returns>
                <text>const_iterator</text>
              </returns>
            </doc>
          </function>
          <function name="has_value" exception-spec="noexcept" id="6t3h6GhzPqBBa77+qGG9pIlXDPw=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1039" class="def"/>
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="547"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <attr id="is-const"/>
            <return>
              <type name="bool"/>
            </return>
            <doc>
              <brief>
                <text>Returns whether or not the optional has a value.</text>
              </brief>
              <para>
                <text>Returns whether or not the optional has a value</text>
              </para>
              <returns>
                <text>bool</text>
              </returns>
            </doc>
          </function>
          <function name="operator*" id="kmoqjyIKIMVvJTzxOMl6UkWHFuA=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1018" class="def"/>
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="519"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <attr id="operator" name="star" value="7"/>
            <attr id="ref-qualifier" name="&amp;" value="1"/>
            <return>
              <type class="lvalue-reference">
                <pointee-type name="T"/>
              </type>
            </return>
            <doc>
              <brief>
                <text>Returns a reference to the stored value.</text>
              </brief>
              <para>
                <text>Returns the stored value</text>
              </para>
              <returns>
                <text>T&amp;</text>
              </returns>
            </doc>
          </function>
          <function name="operator*" id="aOc/ApjaFfvs1c9RgpjDL2tCCy8=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1023" class="def"/>
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="526"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <attr id="operator" name="star" value="7"/>
            <attr id="is-const"/>
            <attr id="ref-qualifier" name="&amp;" value="1"/>
            <return>
              <type class="lvalue-reference">
                <pointee-type name="T" cv-qualifiers="const"/>
              </type>
            </return>
            <doc>
              <brief>
                <text>Returns a reference to the stored value.</text>
              </brief>
              <returns>
                <text>const T&amp;</text>
              </returns>
            </doc>
          </function>
          <function name="operator*" id="kXz4cG41Hyr9eJl1BYCzC6k0pmg=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1028" class="def"/>
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="533"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <attr id="operator" name="star" value="7"/>
            <attr id="ref-qualifier" name="&amp;&amp;" value="2"/>
            <return>
              <type class="rvalue-reference">
                <pointee-type name="T"/>
              </type>
            </return>
            <doc>
              <brief>
                <text>Returns a reference to the stored value.</text>
              </brief>
              <returns>
                <text>T&amp;&amp;</text>
              </returns>
            </doc>
          </function>
          <function name="operator-&gt;" id="kzDMgarFg/H4UbLFeOJUy/jpuMg=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1007" class="def"/>
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="506"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <attr id="operator" name="ptr" value="41"/>
            <attr id="is-const"/>
            <return>
              <type class="pointer">
                <pointee-type name="T" cv-qualifiers="const"/>
              </type>
            </return>
            <doc>
              <brief>
                <text>Returns a pointer to the stored value.</text>
              </brief>
              <para>
                <text>Returns a pointer to the stored value</text>
              </para>
              <returns>
                <text>a pointer to the stored value.</text>
              </returns>
            </doc>
          </function>
          <function name="operator-&gt;" id="YEhKE5e5IdAl/MYWXeFZRW0Iq4o=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1012" class="def"/>
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="513"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <attr id="operator" name="ptr" value="41"/>
            <return>
              <type class="pointer">
                <pointee-type name="T"/>
              </type>
            </return>
            <doc>
              <brief>
                <text>Returns a pointer to the stored value.</text>
              </brief>
              <returns>
                <text>T*</text>
              </returns>
            </doc>
          </function>
          <template>
            <tparam name="F" class="type"/>
            <function name="or_else" id="VzK/XB5ufz22S7P4PYexyKFHYyM=">
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1179" class="def"/>
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="683"/>
              <attr id="constexpr-kind" name="constexpr" value="1"/>
              <attr id="is-const"/>
              <attr id="ref-qualifier" name="&amp;" value="1"/>
              <return>
                <type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;T&gt;"/>
              </return>
              <param name="f">
                <type class="rvalue-reference">
                  <pointee-type name="F"/>
                </type>
              </param>
              <doc>
                <brief>
                  <text>Returns an optional containing the stored value if it has one, or the result of applying </text>
                  <mono>f</mono>
                  <text> to the optional if it does not.</text>
                </brief>
                <returns>
                  <text>optional</text>
                </returns>
                <returns>
                  <text>optional&lt;T&gt;</text>
                </returns>
              </doc>
            </function>
          </template>
          <template>
            <tparam name="F" class="type"/>
            <function name="or_else" id="QC9hfotSzRKPcqxIF7lVmbQlJVk=">
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1198" class="def"/>
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="694"/>
              <attr id="constexpr-kind" name="constexpr" value="1"/>
              <attr id="ref-qualifier" name="&amp;&amp;" value="2"/>
              <return>
                <type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;T&gt;"/>
              </return>
              <param name="f">
                <type class="rvalue-reference">
                  <pointee-type name="F"/>
                </type>
              </param>
              <doc>
                <brief>
                  <text>Returns an optional containing the stored value if it has one, or the result of applying </text>
                  <mono>f</mono>
                  <text> to the optional if it does not.</text>
                </brief>
                <returns>
                  <text>auto</text>
                </returns>
                <returns>
                  <text>optional&lt;T&gt;</text>
                </returns>
              </doc>
            </function>
          </template>
          <function name="reset" exception-spec="noexcept" id="bTJMu3zaBfwK9I2C+ofyz8wR7K8=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1208" class="def"/>
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="702"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <doc>
              <brief>
                <text>Resets the optional to an empty state, destroying the stored value if there is one.</text>
              </brief>
            </doc>
          </function>
          <function name="swap" exception-spec="noexcept(std::is_nothrow_move_constructible&lt;T&gt;::value &amp;&amp; std::is_nothrow_swappable&lt;T&gt;::value)" id="LzHf/b38WjPqYjOYi4sQzApHUGg=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="964" class="def"/>
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="474"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <param name="rhs">
              <type class="lvalue-reference">
                <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional"/>
              </type>
            </param>
            <doc>
              <brief>
                <text>Swaps this optional with the other.</text>
              </brief>
              <para>
                <text>Swaps this optional with the other.</text>
              </para>
              <para>
                <text>If neither optionals have a value, nothing happens. If both have a value, the values are swapped. If one has a value, it is moved to the other and the movee is left valueless.</text>
              </para>
            </doc>
          </function>
          <template>
            <tparam name="F" class="type"/>
            <function name="transform" id="el6M1DCXjliDpUuaK7cN4p1aKmY=">
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1126" class="def"/>
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="639"/>
              <attr id="constexpr-kind" name="constexpr" value="1"/>
              <attr id="ref-qualifier" name="&amp;" value="1"/>
              <return>
                <type class="auto" keyword="auto">
                </type>
              </return>
              <param name="f">
                <type class="rvalue-reference">
                  <pointee-type name="F"/>
                </type>
              </param>
              <doc>
                <brief>
                  <text>Returns an optional containing the result of applying </text>
                  <mono>f</mono>
                  <text> to the stored value, or a default value if there is no stored value.</text>
                </brief>
                <para>
                  <text>Carries out some operation on the stored object if there is one.</text>
                </para>
                <returns>
                  <text>optional</text>
                </returns>
              </doc>
            </function>
          </template>
          <template>
            <tparam name="F" class="type"/>
            <function name="transform" id="0a6dSB0m3FNv5idHuDHC8O2tn0c=">
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1137" class="def"/>
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="650"/>
              <attr id="constexpr-kind" name="constexpr" value="1"/>
              <attr id="ref-qualifier" name="&amp;&amp;" value="2"/>
              <return>
                <type class="auto" keyword="auto">
                </type>
              </return>
              <param name="f">
                <type class="rvalue-reference">
                  <pointee-type name="F"/>
                </type>
              </param>
              <doc>
                <brief>
                  <text>Returns an optional containing the result of applying </text>
                  <mono>f</mono>
                  <text> to the stored value, or a default value if there is no stored value.</text>
                </brief>
                <returns>
                  <text>auto</text>
                </returns>
              </doc>
            </function>
          </template>
          <template>
            <tparam name="F" class="type"/>
            <function name="transform" id="EKUZGEh0j0oxo12rDBwrUGU+ulg=">
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1148" class="def"/>
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="661"/>
              <attr id="constexpr-kind" name="constexpr" value="1"/>
              <attr id="is-const"/>
              <attr id="ref-qualifier" name="&amp;" value="1"/>
              <return>
                <type class="auto" keyword="auto">
                </type>
              </return>
              <param name="f">
                <type class="rvalue-reference">
                  <pointee-type name="F"/>
                </type>
              </param>
              <doc>
                <brief>
                  <text>Returns an optional containing the result of applying </text>
                  <mono>f</mono>
                  <text> to the stored value, or a default value if there is no stored value.</text>
                </brief>
                <returns>
                  <text>auto</text>
                </returns>
              </doc>
            </function>
          </template>
          <template>
            <tparam name="F" class="type"/>
            <function name="transform" id="cMMSO7neVan/uAs9oQ6RkVGr6bY=">
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1159" class="def"/>
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="672"/>
              <attr id="constexpr-kind" name="constexpr" value="1"/>
              <attr id="is-const"/>
              <attr id="ref-qualifier" name="&amp;&amp;" value="2"/>
              <return>
                <type class="auto" keyword="auto">
                </type>
              </return>
              <param name="f">
                <type class="rvalue-reference">
                  <pointee-type name="F"/>
                </type>
              </param>
              <doc>
                <brief>
                  <text>Returns an optional containing the result of applying </text>
                  <mono>f</mono>
                  <text> to the stored value, or a default value if there is no stored value.</text>
                </brief>
                <returns>
                  <text>auto</text>
                </returns>
              </doc>
            </function>
          </template>
          <function name="value" id="05X03ZzuWSaQiySn36G9bywpUZU=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1046" class="def"/>
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="554"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <attr id="ref-qualifier" name="&amp;" value="1"/>
            <return>
              <type class="lvalue-reference">
                <pointee-type name="T"/>
              </type>
            </return>
            <doc>
              <brief>
                <text>Returns a reference to the stored value.</text>
              </brief>
              <para>
                <text>Returns the contained value if there is one, otherwise throws bad_optional_access</text>
              </para>
              <returns>
                <text>T&amp;</text>
              </returns>
            </doc>
          </function>
          <function name="value" id="mcQbBSKEPph1cKveoe/9PQvnqiE=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1050" class="def"/>
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="561"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <attr id="is-const"/>
            <attr id="ref-qualifier" name="&amp;" value="1"/>
            <return>
              <type class="lvalue-reference">
                <pointee-type name="T" cv-qualifiers="const"/>
              </type>
            </return>
            <doc>
              <brief>
                <text>Returns a reference to the stored value.</text>
              </brief>
              <returns>
                <text>const T&amp;</text>
              </returns>
            </doc>
          </function>
          <function name="value" id="KnsmxZwrhjrKCjkda/+P/Fc0rRU=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1054" class="def"/>
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="568"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <attr id="ref-qualifier" name="&amp;&amp;" value="2"/>
            <return>
              <type class="rvalue-reference">
                <pointee-type name="T"/>
              </type>
            </return>
            <doc>
              <brief>
                <text>Returns a reference to the stored value.</text>
              </brief>
              <returns>
                <text>T&amp;&amp;</text>
              </returns>
            </doc>
          </function>
          <template>
            <tparam name="U" class="type" default="std::remove_cv_t&lt;T&gt;"/>
            <function name="value_or" id="tWz8D+1O2TACm49FcqWujziPfhw=">
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1061" class="def"/>
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="577"/>
              <attr id="constexpr-kind" name="constexpr" value="1"/>
              <attr id="is-const"/>
              <attr id="ref-qualifier" name="&amp;" value="1"/>
              <return>
                <type name="T"/>
              </return>
              <param name="u">
                <type class="rvalue-reference">
                  <pointee-type name="U"/>
                </type>
              </param>
              <doc>
                <brief>
                  <text>Returns a reference to the stored value.</text>
                </brief>
                <para>
                  <text>Returns the stored value if there is one, otherwise returns </text>
                  <mono>u</mono>
                </para>
                <returns>
                  <text>T</text>
                </returns>
              </doc>
            </function>
          </template>
          <template>
            <tparam name="U" class="type" default="std::remove_cv_t&lt;T&gt;"/>
            <function name="value_or" id="sXX+q8p/zVy05Z2YUpHGEOmhqME=">
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1068" class="def"/>
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="586"/>
              <attr id="constexpr-kind" name="constexpr" value="1"/>
              <attr id="ref-qualifier" name="&amp;&amp;" value="2"/>
              <return>
                <type name="T"/>
              </return>
              <param name="u">
                <type class="rvalue-reference">
                  <pointee-type name="U"/>
                </type>
              </param>
              <doc>
                <brief>
                  <text>Returns a reference to the stored value.</text>
                </brief>
                <returns>
                  <text>T</text>
                </returns>
              </doc>
            </function>
          </template>
          <function class="conversion" name="operator bool" exception-spec="noexcept" explicit-spec="explicit" id="2PRpxJIgA4IeM03nrPqgz/gWEwM=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1033" class="def"/>
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="540"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <attr id="is-const"/>
            <return>
              <type name="bool"/>
            </return>
            <doc>
              <brief>
                <text>Converts the optional to a boolean indicating whether it has a value.</text>
              </brief>
              <returns>
                <text>bool</text>
              </returns>
            </doc>
          </function>
          <variable name="_" id="bhi4SqTfa4/ZxLUXrOV2W7orrjA=" default="{}">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="711"/>
            <type id="/qcgW01qPkslPc2T6YxbhqJlyJc=" name="empty"/>
            <doc>
              <brief>
                <text>The empty state of the optional.</text>
              </brief>
            </doc>
          </variable>
          <variable name="value_" id="bX2YjchFyI55CEfjEgcfj+ScNCU=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="717"/>
            <type name="T"/>
            <doc>
              <brief>
                <text>The stored value of the optional.</text>
              </brief>
            </doc>
          </variable>
        </class>
      </template>
      <template class="partial" id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=">
        <tparam name="T" class="type"/>
        <targ class="type" type="T&amp;"/>
        <class name="optional" id="Zs/QQI/wnJbLRYvV0XBQmu3hGTg=">
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1446" class="def"/>
          <friend id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=">
            <befriended id="Pvkqsm2J3WYxmvM1xBy22WjfJxg="/>
          </friend>
          <namespace-alias name="iterator" id="ImzGgmBJunwnXoDQix9uN5onnAc=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1457"/>
            <type id="CCKBr7Trw4NFH3nVTXCf/PBYKig=" name="detail::contiguous_iterator&lt;T, optional&gt;"/>
            <doc>
              <brief>
                <text>The type of the iterator for the optional.</text>
              </brief>
            </doc>
          </namespace-alias>
          <namespace-alias name="value_type" id="HKgHcnmvhPobNd+aXdcalJHeiv8=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1452"/>
            <type name="T"/>
            <doc>
              <brief>
                <text>The type of the value stored in the optional.</text>
              </brief>
            </doc>
          </namespace-alias>
          <function class="constructor" name="optional" exception-spec="noexcept" id="cLfu7gTNAV5I5oKU2pDiU9UgguU=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1465" class="def"/>
            <attr id="is-defaulted"/>
            <attr id="is-explicitly-defaulted"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <doc>
              <brief>
                <text>Default constructor.</text>
              </brief>
            </doc>
          </function>
          <function class="constructor" name="optional" exception-spec="noexcept" id="o9GpKj7SPAjriVk/EiFzGmbsZWY=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1478" class="def"/>
            <attr id="is-defaulted"/>
            <attr id="is-explicitly-defaulted"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <param name="rhs">
              <type class="lvalue-reference">
                <pointee-type id="Zs/QQI/wnJbLRYvV0XBQmu3hGTg=" name="optional" cv-qualifiers="const"/>
              </type>
            </param>
            <doc>
              <brief>
                <text>Copy constructor.</text>
              </brief>
              <para>
                <text>Constructs an empty optional if the rhs is empty, otherwise constructs the stored value from the rhs.</text>
              </para>
              <param name="rhs">
                <text>The object to copy construct from</text>
              </param>
            </doc>
          </function>
          <function class="constructor" name="optional" exception-spec="noexcept" id="CCXlx4U/aRVorHvd3DujDiYba2M=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1470" class="def"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <param name="value">
              <type id="qm9ez48c7jM2APsMBjONlFHv85U=" name="nullopt_t"/>
            </param>
            <doc>
              <brief>
                <text>Constructs an empty optional.</text>
              </brief>
              <param name="value">
                <text>The object to construct from</text>
              </param>
            </doc>
          </function>
          <template requires="(std::is_constructible_v&lt;T&amp;, U&amp;&gt; &amp;&amp; !std::is_same_v&lt;std::remove_cv_t&lt;T&gt;, optional&lt;U&gt;&gt; &amp;&amp;
                 !std::is_same_v&lt;T&amp;, U&gt; &amp;&amp; detail::reference_constructs_from_temporary_v&lt;T&amp;, U&amp;&gt;)">
            <tparam name="U" class="type"/>
            <function class="constructor" name="optional" id="tHes1IF491OA6INdhHGW8i7Ulck=">
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1601" class="def"/>
              <attr id="is-deleted"/>
              <attr id="is-deleted-as-written"/>
              <attr id="constexpr-kind" name="constexpr" value="1"/>
              <param name="rhs">
                <type class="lvalue-reference">
                  <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;U&gt;"/>
                </type>
              </param>
              <doc>
                <brief>
                  <text>Constructs an optional from another optional of type U</text>
                </brief>
                <para>
                  <text>Constructs the stored value from the rhs if it has a value, otherwise constructs an empty optional. If </text>
                  <mono>T&amp;</mono>
                  <text> can be constructed from a temporary, this constructor is deleted to prevent binding a temporary to a reference.</text>
                </para>
              </doc>
            </function>
          </template>
          <template requires="(std::is_constructible_v&lt;T&amp;, U&amp;&gt; &amp;&amp; !std::is_same_v&lt;std::remove_cv_t&lt;T&gt;, optional&lt;U&gt;&gt; &amp;&amp;
             !std::is_same_v&lt;T&amp;, U&gt; &amp;&amp; !detail::reference_constructs_from_temporary_v&lt;T&amp;, U&amp;&gt;)">
            <tparam name="U" class="type"/>
            <function class="constructor" name="optional" exception-spec="noexcept(std::is_nothrow_constructible_v&lt;T &amp;, U &amp;&gt;)" explicit-spec="explicit(!std::is_convertible_v&lt;U &amp;, T &amp;&gt;)" id="1K412F9b6lnfodH9s1eX/okDtBs=">
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1857" class="def"/>
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1535"/>
              <attr id="constexpr-kind" name="constexpr" value="1"/>
              <param name="rhs">
                <type class="lvalue-reference">
                  <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;U&gt;"/>
                </type>
              </param>
              <doc>
                <brief>
                  <text>Constructs an optional from another optional of type U.</text>
                </brief>
                <para>
                  <text>Constructs the stored value from the rhs if it has a value, otherwise constructs an empty optional. If </text>
                  <mono>T&amp;</mono>
                  <text> can be constructed from a temporary, this constructor is deleted to prevent binding a temporary to a reference.</text>
                </para>
              </doc>
            </function>
          </template>
          <template requires="(std::is_constructible_v&lt;T&amp;, const U&amp;&gt; &amp;&amp; !std::is_same_v&lt;std::remove_cv_t&lt;T&gt;, optional&lt;U&gt;&gt; &amp;&amp;
                 !std::is_same_v&lt;T&amp;, U&gt; &amp;&amp; detail::reference_constructs_from_temporary_v&lt;T&amp;, const U&amp;&gt;)">
            <tparam name="U" class="type"/>
            <function class="constructor" name="optional" id="Gm6dffkwxzMnRLZxMaYhU6Ny9AM=">
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1617" class="def"/>
              <attr id="is-deleted"/>
              <attr id="is-deleted-as-written"/>
              <attr id="constexpr-kind" name="constexpr" value="1"/>
              <param name="rhs">
                <type class="lvalue-reference">
                  <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;U&gt;" cv-qualifiers="const"/>
                </type>
              </param>
              <doc>
                <brief>
                  <text>Constructs an optional from another optional of type U</text>
                </brief>
                <para>
                  <text>Constructs the stored value from the rhs if it has a value, otherwise constructs an empty optional. If </text>
                  <mono>T&amp;</mono>
                  <text> can be constructed from a temporary, this constructor is deleted to prevent binding a temporary to a reference.</text>
                </para>
              </doc>
            </function>
          </template>
          <template requires="(std::is_constructible_v&lt;T&amp;, const U&amp;&gt; &amp;&amp; !std::is_same_v&lt;std::remove_cv_t&lt;T&gt;, optional&lt;U&gt;&gt; &amp;&amp;
             !std::is_same_v&lt;T&amp;, U&gt; &amp;&amp; !detail::reference_constructs_from_temporary_v&lt;T&amp;, const U&amp;&gt;)">
            <tparam name="U" class="type"/>
            <function class="constructor" name="optional" exception-spec="noexcept(std::is_nothrow_constructible_v&lt;T &amp;, const U &amp;&gt;)" explicit-spec="explicit(!std::is_convertible_v&lt;const U &amp;, T &amp;&gt;)" id="+O76NEA6Zuy0dSCfEDivokV6TNE=">
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1867" class="def"/>
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1551"/>
              <attr id="constexpr-kind" name="constexpr" value="1"/>
              <param name="rhs">
                <type class="lvalue-reference">
                  <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;U&gt;" cv-qualifiers="const"/>
                </type>
              </param>
              <doc>
                <brief>
                  <text>Constructs an optional from another optional of type U.</text>
                </brief>
                <para>
                  <text>Constructs the stored value from the rhs if it has a value, otherwise constructs an empty optional. If </text>
                  <mono>T&amp;</mono>
                  <text> can be constructed from a temporary, this constructor is deleted to prevent binding a temporary to a reference.</text>
                </para>
              </doc>
            </function>
          </template>
          <template requires="(std::is_constructible_v&lt;T&amp;, U&gt; &amp;&amp; !(std::is_same_v&lt;std::remove_cvref_t&lt;U&gt;, in_place_t&gt;) &amp;&amp;
                 !(std::is_same_v&lt;std::remove_cvref_t&lt;U&gt;, optional&gt;) &amp;&amp;
                 !detail::reference_constructs_from_temporary_v&lt;T&amp;, U&gt;)">
            <tparam name="U" class="type"/>
            <function class="constructor" name="optional" exception-spec="noexcept(std::is_nothrow_constructible_v&lt;T &amp;, U&gt;)" explicit-spec="explicit(!std::is_convertible_v&lt;U, T &amp;&gt;)" id="8rdX+hvJvB2x5Qx52IObP6wfCaU=">
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1499" class="def"/>
              <attr id="constexpr-kind" name="constexpr" value="1"/>
              <param name="u">
                <type class="rvalue-reference">
                  <pointee-type name="U"/>
                </type>
              </param>
              <doc>
                <brief>
                  <text>Construct from a U</text>
                </brief>
                <para>
                  <text>Constructs the stored value from </text>
                  <mono>u</mono>
                  <text> if it is convertible to </text>
                  <mono>T&amp;</mono>
                  <text>. If </text>
                  <mono>T&amp;</mono>
                  <text> can be constructed from a temporary, this constructor is deleted to prevent binding a temporary to a reference.</text>
                </para>
              </doc>
            </function>
          </template>
          <template requires="(std::is_constructible_v&lt;T&amp;, U&gt; &amp;&amp; !(std::is_same_v&lt;std::remove_cvref_t&lt;U&gt;, in_place_t&gt;) &amp;&amp;
                 !(std::is_same_v&lt;std::remove_cvref_t&lt;U&gt;, optional&gt;) &amp;&amp;
                 detail::reference_constructs_from_temporary_v&lt;T&amp;, U&gt;)">
            <tparam name="U" class="type"/>
            <function class="constructor" name="optional" id="c2+wQn36pWn5xyz/p1yXiU9zt2E=">
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1513" class="def"/>
              <attr id="is-deleted"/>
              <attr id="is-deleted-as-written"/>
              <attr id="constexpr-kind" name="constexpr" value="1"/>
              <param name="u">
                <type class="rvalue-reference">
                  <pointee-type name="U"/>
                </type>
              </param>
              <doc>
                <brief>
                  <text>Constructs an optional from a U, but deletes the constructor if</text>
                </brief>
                <param name="u">
                  <text>The object to move construct from</text>
                </param>
              </doc>
            </function>
          </template>
          <template requires="(std::is_constructible_v&lt;T&amp;, U&gt; &amp;&amp; !std::is_same_v&lt;std::remove_cv_t&lt;T&gt;, optional&lt;U&gt;&gt; &amp;&amp;
                 !std::is_same_v&lt;T&amp;, U&gt; &amp;&amp; detail::reference_constructs_from_temporary_v&lt;T&amp;, U&gt;)">
            <tparam name="U" class="type"/>
            <function class="constructor" name="optional" id="qPT+QtqlKQIHot8z6M1MKQFv4M4=">
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1633" class="def"/>
              <attr id="is-deleted"/>
              <attr id="is-deleted-as-written"/>
              <attr id="constexpr-kind" name="constexpr" value="1"/>
              <param name="rhs">
                <type class="rvalue-reference">
                  <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;U&gt;"/>
                </type>
              </param>
              <doc>
                <brief>
                  <text>Constructs an optional from another optional of type U</text>
                </brief>
                <para>
                  <text>Constructs the stored value from the rhs if it has a value, otherwise constructs an empty optional. If </text>
                  <mono>T&amp;</mono>
                  <text> can be constructed from a temporary, this constructor is deleted to prevent binding a temporary to a reference.</text>
                </para>
              </doc>
            </function>
          </template>
          <template requires="(std::is_constructible_v&lt;T&amp;, U&gt; &amp;&amp; !std::is_same_v&lt;std::remove_cv_t&lt;T&gt;, optional&lt;U&gt;&gt; &amp;&amp;
             !std::is_same_v&lt;T&amp;, U&gt; &amp;&amp; !detail::reference_constructs_from_temporary_v&lt;T&amp;, U&gt;)">
            <tparam name="U" class="type"/>
            <function class="constructor" name="optional" exception-spec="noexcept(noexcept(std::is_nothrow_constructible_v&lt;T &amp;, U&gt;))" explicit-spec="explicit(!std::is_convertible_v&lt;U, T &amp;&gt;)" id="CzJ5gqV2CyQrYpay4uRedli4EiE=">
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1877" class="def"/>
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1567"/>
              <attr id="constexpr-kind" name="constexpr" value="1"/>
              <param name="rhs">
                <type class="rvalue-reference">
                  <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;U&gt;"/>
                </type>
              </param>
              <doc>
                <brief>
                  <text>Constructs an optional from another optional of type U.</text>
                </brief>
                <para>
                  <text>Constructs the stored value from the rhs if it has a value, otherwise constructs an empty optional. If </text>
                  <mono>T&amp;</mono>
                  <text> can be constructed from a temporary, this constructor is deleted to prevent binding a temporary to a reference.</text>
                </para>
              </doc>
            </function>
          </template>
          <template requires="(std::is_constructible_v&lt;T&amp;, const U&gt; &amp;&amp; !std::is_same_v&lt;std::remove_cv_t&lt;T&gt;, optional&lt;U&gt;&gt; &amp;&amp;
                 !std::is_same_v&lt;T&amp;, U&gt; &amp;&amp; detail::reference_constructs_from_temporary_v&lt;T&amp;, const U&gt;)">
            <tparam name="U" class="type"/>
            <function class="constructor" name="optional" id="n6DbNeBAnEhqR68H7FxFuPM+m5o=">
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1649" class="def"/>
              <attr id="is-deleted"/>
              <attr id="is-deleted-as-written"/>
              <attr id="constexpr-kind" name="constexpr" value="1"/>
              <param name="rhs">
                <type class="rvalue-reference">
                  <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;U&gt;" cv-qualifiers="const"/>
                </type>
              </param>
              <doc>
                <brief>
                  <text>Constructs an optional from another optional of type U</text>
                </brief>
                <para>
                  <text>Constructs the stored value from the rhs if it has a value, otherwise constructs an empty optional. If </text>
                  <mono>T&amp;</mono>
                  <text> can be constructed from a temporary, this constructor is deleted to prevent binding a temporary to a reference.</text>
                </para>
              </doc>
            </function>
          </template>
          <template requires="(std::is_constructible_v&lt;T&amp;, const U&gt; &amp;&amp; !std::is_same_v&lt;std::remove_cv_t&lt;T&gt;, optional&lt;U&gt;&gt; &amp;&amp;
             !std::is_same_v&lt;T&amp;, U&gt; &amp;&amp; !detail::reference_constructs_from_temporary_v&lt;T&amp;, const U&gt;)">
            <tparam name="U" class="type"/>
            <function class="constructor" name="optional" exception-spec="noexcept(noexcept(std::is_nothrow_constructible_v&lt;T &amp;, const U&gt;))" explicit-spec="explicit(!std::is_convertible_v&lt;const U, T &amp;&gt;)" id="swvLFC/on92mDpZvrrHYJi4sakE=">
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1887" class="def"/>
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1584"/>
              <attr id="constexpr-kind" name="constexpr" value="1"/>
              <param name="rhs">
                <type class="rvalue-reference">
                  <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;U&gt;" cv-qualifiers="const"/>
                </type>
              </param>
              <doc>
                <brief>
                  <text>Constructs an optional from another optional of type U.</text>
                </brief>
                <para>
                  <text>Constructs the stored value from the rhs if it has a value, otherwise constructs an empty optional. If </text>
                  <mono>T&amp;</mono>
                  <text> can be constructed from a temporary, this constructor is deleted to prevent binding a temporary to a reference.</text>
                </para>
              </doc>
            </function>
          </template>
          <template requires="(std::is_constructible_v&lt;T&amp;, Arg&gt; &amp;&amp; !detail::reference_constructs_from_temporary_v&lt;T&amp;, Arg&gt;)">
            <tparam name="Arg" class="type"/>
            <function class="constructor" name="optional" explicit-spec="explicit" id="R1Mnx2muh7mlrQZm1xUJB1VVV30=">
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1841" class="def"/>
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1486"/>
              <attr id="constexpr-kind" name="constexpr" value="1"/>
              <param>
                <type id="mwtFNA7SiRZ2GcsbxvFhVCUxbJs=" name="in_place_t"/>
              </param>
              <param name="arg">
                <type class="rvalue-reference">
                  <pointee-type name="Arg"/>
                </type>
              </param>
              <doc>
                <brief>
                  <text>In-place constructor.</text>
                </brief>
              </doc>
            </function>
          </template>
          <function class="destructor" name="~optional" id="wjY4EUwBn1tkTLFIZIdPmL64peM=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1661" class="def"/>
            <attr id="is-defaulted"/>
            <attr id="is-explicitly-defaulted"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <doc>
              <brief>
                <text>Destructor.</text>
              </brief>
              <para>
                <text>Does not destroy the stored value, as it is a reference.</text>
              </para>
            </doc>
          </function>
          <function name="operator=" exception-spec="noexcept" id="TFL+XmGLwky00X4OCkEmF/A2uPY=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1684" class="def"/>
            <attr id="is-defaulted"/>
            <attr id="is-explicitly-defaulted"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <attr id="operator" name="assign" value="14"/>
            <return>
              <type class="lvalue-reference">
                <pointee-type id="Zs/QQI/wnJbLRYvV0XBQmu3hGTg=" name="optional"/>
              </type>
            </return>
            <param name="rhs">
              <type class="lvalue-reference">
                <pointee-type id="Zs/QQI/wnJbLRYvV0XBQmu3hGTg=" name="optional" cv-qualifiers="const"/>
              </type>
            </param>
            <doc>
              <brief>
                <text>Assignment operator.</text>
              </brief>
              <para>
                <text>If </text>
                <mono>rhs</mono>
                <text> has a value, assigns it to the stored value. Otherwise resets the stored value in </text>
                <mono>*this</mono>
                <text>.</text>
              </para>
              <returns>
                <text>optional&amp;</text>
              </returns>
            </doc>
          </function>
          <function name="operator=" exception-spec="noexcept" id="4kuemHPFlUG4YOumwfEoqFBK5Xs=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1898" class="def"/>
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1673"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <attr id="operator" name="assign" value="14"/>
            <return>
              <type class="lvalue-reference">
                <pointee-type id="Zs/QQI/wnJbLRYvV0XBQmu3hGTg=" name="optional&lt;T&amp;&gt;"/>
              </type>
            </return>
            <param name="value">
              <type id="qm9ez48c7jM2APsMBjONlFHv85U=" name="nullopt_t"/>
            </param>
            <doc>
              <brief>
                <text>Nullopt assignment operator.</text>
              </brief>
              <para>
                <text>Destroys the current value if there is one, and leaves the optional in an empty state.</text>
              </para>
              <returns>
                <text>optional&amp;</text>
              </returns>
              <param name="value">
                <text>The object to assign from</text>
              </param>
            </doc>
          </function>
          <template>
            <tparam name="F" class="type"/>
            <function name="and_then" id="+CIsV+Wu2L3LpDdj+cSlI+ffohE=">
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1966" class="def"/>
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1780"/>
              <attr id="constexpr-kind" name="constexpr" value="1"/>
              <attr id="is-const"/>
              <return>
                <type class="auto" keyword="auto">
                </type>
              </return>
              <param name="f">
                <type class="rvalue-reference">
                  <pointee-type name="F"/>
                </type>
              </param>
              <doc>
                <brief>
                  <text>Applies a function to the stored value if there is one.</text>
                </brief>
                <para>
                  <text>The return type is the same as</text>
                </para>
                <code>
                  <text>{std::invoke_result_t&lt;F, T&amp;&gt;},
 but wrapped in an optional. The function \p f must return an optional type.


</text>
                </code>
                <returns>
                  <text>auto</text>
                </returns>
              </doc>
            </function>
          </template>
          <function name="begin" exception-spec="noexcept" id="X1AIJ9Ah4bgrav3VQir5ICrhAsA=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1921" class="def"/>
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1713"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <attr id="is-const"/>
            <return>
              <type id="ImzGgmBJunwnXoDQix9uN5onnAc=" name="optional&lt;T&amp;&gt;::iterator"/>
            </return>
            <doc>
              <brief>
                <text>Returns an iterator to the beginning of the optional.</text>
              </brief>
              <returns>
                <text>iterator</text>
              </returns>
            </doc>
          </function>
          <template requires="(std::is_constructible_v&lt;T&amp;, U&gt; &amp;&amp; !detail::reference_constructs_from_temporary_v&lt;T&amp;, U&gt;)">
            <tparam name="U" class="type"/>
            <function name="emplace" exception-spec="noexcept(std::is_nothrow_constructible_v&lt;T &amp;, U&gt;)" id="7+OGwBrFCrxThvddBEJ+wuZF5bE=">
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1905" class="def"/>
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1695"/>
              <attr id="constexpr-kind" name="constexpr" value="1"/>
              <return>
                <type class="lvalue-reference">
                  <pointee-type name="T"/>
                </type>
              </return>
              <param name="u">
                <type class="rvalue-reference">
                  <pointee-type name="U"/>
                </type>
              </param>
              <doc>
                <brief>
                  <text>Emplaces a new value in the optional, destroying the current one if</text>
                </brief>
                <para>
                  <text>Constructs the stored value from </text>
                  <mono>u</mono>
                  <text> if it is convertible to </text>
                  <mono>T&amp;</mono>
                  <text>.</text>
                </para>
                <returns>
                  <text>T&amp;</text>
                </returns>
              </doc>
            </function>
          </template>
          <function name="end" exception-spec="noexcept" id="UNJe5kObJeo3tPH32c0hMzSV3gs=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1926" class="def"/>
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1720"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <attr id="is-const"/>
            <return>
              <type id="ImzGgmBJunwnXoDQix9uN5onnAc=" name="optional&lt;T&amp;&gt;::iterator"/>
            </return>
            <doc>
              <brief>
                <text>Returns an iterator to the end of the optional.</text>
              </brief>
              <returns>
                <text>iterator</text>
              </returns>
            </doc>
          </function>
          <function name="has_value" exception-spec="noexcept" id="aY62oe+NUw8aeR3uvpBwzQEUSHQ=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1946" class="def"/>
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1749"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <attr id="is-const"/>
            <return>
              <type name="bool"/>
            </return>
            <doc>
              <brief>
                <text>Checks if the optional has a value.</text>
              </brief>
              <returns>
                <text>bool</text>
              </returns>
            </doc>
          </function>
          <function name="operator*" exception-spec="noexcept" id="rmdpui0fPtFx6oMCmgOLFa8hNGU=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1937" class="def"/>
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1735"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <attr id="operator" name="star" value="7"/>
            <attr id="is-const"/>
            <return>
              <type class="lvalue-reference">
                <pointee-type name="T"/>
              </type>
            </return>
            <doc>
              <brief>
                <text>Returns a reference to the stored value.</text>
              </brief>
              <returns>
                <text>T&amp;</text>
              </returns>
            </doc>
          </function>
          <function name="operator-&gt;" exception-spec="noexcept" id="l21I05K2PgxKkWyfKHQF5ICcKyY=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1932" class="def"/>
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1728"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <attr id="operator" name="ptr" value="41"/>
            <attr id="is-const"/>
            <return>
              <type class="pointer">
                <pointee-type name="T"/>
              </type>
            </return>
            <doc>
              <brief>
                <text>Returns a pointer to the stored value.</text>
              </brief>
              <returns>
                <text>T*</text>
              </returns>
            </doc>
          </function>
          <template>
            <tparam name="F" class="type"/>
            <function name="or_else" id="lQfRDUtH/pSoPlleSfx2qW38Xa8=">
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="2007" class="def"/>
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1807"/>
              <attr id="constexpr-kind" name="constexpr" value="1"/>
              <attr id="is-const"/>
              <return>
                <type id="Zs/QQI/wnJbLRYvV0XBQmu3hGTg=" name="optional&lt;T&amp;&gt;"/>
              </return>
              <param name="f">
                <type class="rvalue-reference">
                  <pointee-type name="F"/>
                </type>
              </param>
              <doc>
                <brief>
                  <text>Calls a function if the optional is empty.</text>
                </brief>
                <para>
                  <text>The return type is the same as the return type of </text>
                  <mono>f,</mono>
                  <text> which must return an optional type.</text>
                </para>
                <returns>
                  <text>optional</text>
                </returns>
                <returns>
                  <text>optional&lt;T&amp;&gt;</text>
                </returns>
              </doc>
            </function>
          </template>
          <function name="reset" exception-spec="noexcept" id="C7IX7rHsnHDv4WObAGfzwOLKpII=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="2019" class="def"/>
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1815"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <doc>
              <brief>
                <text>Resets the optional to an empty state.</text>
              </brief>
            </doc>
          </function>
          <function name="swap" exception-spec="noexcept" id="0sezOtQcwTaucSDTeDMFLP2y+a8=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1914" class="def"/>
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1705"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <param name="rhs">
              <type class="lvalue-reference">
                <pointee-type id="Zs/QQI/wnJbLRYvV0XBQmu3hGTg=" name="optional"/>
              </type>
            </param>
            <doc>
              <brief>
                <text>Swaps the contents of this optional with another.</text>
              </brief>
            </doc>
          </function>
          <template>
            <tparam name="F" class="type"/>
            <function name="transform" id="AsqRxmpl9EWCaS96N2JRGNx/vVE=">
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1983" class="def"/>
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1794"/>
              <attr id="constexpr-kind" name="constexpr" value="1"/>
              <attr id="is-const"/>
              <return>
                <type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;std::invoke_result_t&lt;F, T&amp;&gt;&gt;"/>
              </return>
              <param name="f">
                <type class="rvalue-reference">
                  <pointee-type name="F"/>
                </type>
              </param>
              <doc>
                <brief>
                  <text>Applies a function to the stored value if there is one.</text>
                </brief>
                <para>
                  <text>The return type is the same as</text>
                </para>
                <code>
                  <text>{std::invoke_result_t&lt;F, T&amp;&gt;},
 but wrapped in an optional.


</text>
                </code>
                <returns>
                  <text>optional&lt;std::invoke_result_t&lt;F, T&amp;&gt;&gt;</text>
                </returns>
              </doc>
            </function>
          </template>
          <function name="value" id="VAB1HjckTR+EtBS0EQS3k1yoFN4=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1951" class="def"/>
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1756"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <attr id="is-const"/>
            <return>
              <type class="lvalue-reference">
                <pointee-type name="T"/>
              </type>
            </return>
            <doc>
              <brief>
                <text>Returns the stored value if there is one, otherwise throws</text>
              </brief>
              <returns>
                <text>T&amp;</text>
              </returns>
            </doc>
          </function>
          <template>
            <tparam name="U" class="type" default="std::remove_cv_t&lt;T&gt;"/>
            <function name="value_or" id="Llw358IOQBhq4dB3CfG+IBSVCQw=">
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1957" class="def"/>
              <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1765"/>
              <attr id="constexpr-kind" name="constexpr" value="1"/>
              <attr id="is-const"/>
              <return>
                <type id="6r7SOuJQ2QDkxqJNf/Mb4aVHmKQ=" name="std::remove_cv_t&lt;T&gt;"/>
              </return>
              <param name="u">
                <type class="rvalue-reference">
                  <pointee-type name="U"/>
                </type>
              </param>
              <doc>
                <brief>
                  <text>Returns the stored value if there is one, otherwise returns </text>
                  <mono>u</mono>
                  <text>.</text>
                </brief>
                <returns>
                  <text>std::remove_cv_t&lt;T&gt;</text>
                </returns>
              </doc>
            </function>
          </template>
          <function class="conversion" name="operator bool" exception-spec="noexcept" explicit-spec="explicit" id="OosCP+eHvPFAql3lYwgG+tuIvl4=">
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1942" class="def"/>
            <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1742"/>
            <attr id="constexpr-kind" name="constexpr" value="1"/>
            <attr id="is-const"/>
            <return>
              <type name="bool"/>
            </return>
            <doc>
              <brief>
                <text>Converts the optional to a boolean value.</text>
              </brief>
              <returns>
                <text>bool</text>
              </returns>
            </doc>
          </function>
        </class>
      </template>
      <template>
        <tparam class="constant" type="int" default="0"/>
        <tparam name="T" class="type"/>
        <function name="make_optional" exception-spec="noexcept(std::is_nothrow_constructible_v&lt;optional&lt;std::decay_t&lt;T&gt;&gt;, T&gt;)" requires="std::is_constructible_v&lt;std::decay_t&lt;T&gt;, T&gt;" id="RbqUUVLaGukj1xo2IfQkyFdAaR0=">
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1380" class="def"/>
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="195"/>
          <attr id="constexpr-kind" name="constexpr" value="1"/>
          <return>
            <type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;std::decay_t&lt;T&gt;&gt;"/>
          </return>
          <param name="t">
            <type class="rvalue-reference">
              <pointee-type name="T"/>
            </type>
          </param>
        </function>
      </template>
      <template>
        <tparam name="T" class="type"/>
        <tparam name="Args" class="type"/>
        <function name="make_optional" exception-spec="noexcept(std::is_nothrow_constructible_v&lt;T, Args...&gt;)" requires="std::is_constructible_v&lt;T, Args...&gt;" id="CdeCpJt0UcmBZE6rjeg3bNrs8/c=">
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1388" class="def"/>
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="200"/>
          <attr id="constexpr-kind" name="constexpr" value="1"/>
          <return>
            <type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;T&gt;"/>
          </return>
          <param name="args">
            <type class="rvalue-reference" is-pack="1">
              <pointee-type is-pack="1" name="Args"/>
            </type>
          </param>
        </function>
      </template>
      <template>
        <tparam name="T" class="type"/>
        <tparam name="U" class="type"/>
        <tparam name="Args" class="type"/>
        <function name="make_optional" exception-spec="noexcept(std::is_nothrow_constructible_v&lt;T, std::initializer_list&lt;U&gt; &amp;, Args...&gt;)" requires="std::is_constructible_v&lt;T, std::initializer_list&lt;U&gt;&amp;, Args...&gt;" id="/sr6Giocx2Y8H6bVb17M9qnkBo4=">
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1396" class="def"/>
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="204"/>
          <attr id="constexpr-kind" name="constexpr" value="1"/>
          <return>
            <type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;T&gt;"/>
          </return>
          <param name="il">
            <type id="3tT5Y8vozttMWXrA/fNw4NcDYTE=" name="std::initializer_list&lt;U&gt;"/>
          </param>
          <param name="args">
            <type class="rvalue-reference" is-pack="1">
              <pointee-type is-pack="1" name="Args"/>
            </type>
          </param>
        </function>
      </template>
      <template>
        <tparam name="T" class="type"/>
        <function name="swap" exception-spec="noexcept(noexcept(lhs.swap(rhs)))" requires="std::is_move_constructible_v&lt;T&gt; &amp;&amp; std::is_swappable_v&lt;T&gt;" id="h7d7FYRcQ1GHFPgVi9Bey+kSfwk=">
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1373" class="def"/>
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="191"/>
          <attr id="constexpr-kind" name="constexpr" value="1"/>
          <param name="x">
            <type class="lvalue-reference">
              <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;T&gt;"/>
            </type>
          </param>
          <param name="y">
            <type class="lvalue-reference">
              <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;T&gt;"/>
            </type>
          </param>
        </function>
      </template>
      <template>
        <tparam name="T" class="type"/>
        <tparam name="U" class="type"/>
        <function name="operator==" requires="detail::optional_eq_rel&lt;T, U&gt;" id="h5L6UUxvyCnZSKXkcV9/2OpLB10=">
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1222" class="def"/>
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="122"/>
          <attr id="constexpr-kind" name="constexpr" value="1"/>
          <attr id="operator" name="eq" value="28"/>
          <return>
            <type name="bool"/>
          </return>
          <param name="lhs">
            <type class="lvalue-reference">
              <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;T&gt;" cv-qualifiers="const"/>
            </type>
          </param>
          <param name="rhs">
            <type class="lvalue-reference">
              <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;U&gt;" cv-qualifiers="const"/>
            </type>
          </param>
          <doc>
            <brief>
              <text>Equality operator</text>
            </brief>
            <returns>
              <mono>true</mono>
              <text> if the objects are equal, </text>
              <mono>false</mono>
              <text> otherwise</text>
            </returns>
            <param name="lhs">
              <text>The left operand</text>
            </param>
            <param name="rhs">
              <text>The right operand</text>
            </param>
            <relates>
              <reference id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=">optional</reference>
            </relates>
          </doc>
        </function>
      </template>
      <template>
        <tparam name="T" class="type"/>
        <function name="operator==" exception-spec="noexcept" id="ATfH0MV8EAQE6oE3e2OWsJsXhbs=">
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1270" class="def"/>
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="144"/>
          <attr id="constexpr-kind" name="constexpr" value="1"/>
          <attr id="operator" name="eq" value="28"/>
          <return>
            <type name="bool"/>
          </return>
          <param name="lhs">
            <type class="lvalue-reference">
              <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;T&gt;" cv-qualifiers="const"/>
            </type>
          </param>
          <param name="rhs">
            <type id="qm9ez48c7jM2APsMBjONlFHv85U=" name="nullopt_t"/>
          </param>
          <doc>
            <brief>
              <text>Equality operator</text>
            </brief>
            <returns>
              <mono>true</mono>
              <text> if the objects are equal, </text>
              <mono>false</mono>
              <text> otherwise</text>
            </returns>
            <param name="lhs">
              <text>The left operand</text>
            </param>
            <param name="rhs">
              <text>The right operand</text>
            </param>
            <relates>
              <reference id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=">optional</reference>
            </relates>
          </doc>
        </function>
      </template>
      <template>
        <tparam name="T" class="type"/>
        <tparam name="U" class="type"/>
        <function name="operator==" requires="detail::optional_eq_rel&lt;T, U&gt;" id="ldpyPTVm1Y7c/9DQKi74IcVueYs=">
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1281" class="def"/>
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="150"/>
          <attr id="constexpr-kind" name="constexpr" value="1"/>
          <attr id="operator" name="eq" value="28"/>
          <return>
            <type name="bool"/>
          </return>
          <param name="lhs">
            <type class="lvalue-reference">
              <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;T&gt;" cv-qualifiers="const"/>
            </type>
          </param>
          <param name="rhs">
            <type class="lvalue-reference">
              <pointee-type name="U" cv-qualifiers="const"/>
            </type>
          </param>
          <doc>
            <brief>
              <text>Equality operator</text>
            </brief>
            <returns>
              <mono>true</mono>
              <text> if the objects are equal, </text>
              <mono>false</mono>
              <text> otherwise</text>
            </returns>
            <param name="lhs">
              <text>The left operand</text>
            </param>
            <param name="rhs">
              <text>The right operand</text>
            </param>
            <relates>
              <reference id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=">optional</reference>
            </relates>
          </doc>
        </function>
      </template>
      <template>
        <tparam name="T" class="type"/>
        <tparam name="U" class="type"/>
        <function name="operator==" requires="detail::optional_eq_rel&lt;T, U&gt;" id="swsGy9qcHw7Y8Qpg4+/Y3T2iZ3U=">
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1288" class="def"/>
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="153"/>
          <attr id="constexpr-kind" name="constexpr" value="1"/>
          <attr id="operator" name="eq" value="28"/>
          <return>
            <type name="bool"/>
          </return>
          <param name="lhs">
            <type class="lvalue-reference">
              <pointee-type name="T" cv-qualifiers="const"/>
            </type>
          </param>
          <param name="rhs">
            <type class="lvalue-reference">
              <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;U&gt;" cv-qualifiers="const"/>
            </type>
          </param>
          <doc>
            <brief>
              <text>Equality operator</text>
            </brief>
            <returns>
              <mono>true</mono>
              <text> if the objects are equal, </text>
              <mono>false</mono>
              <text> otherwise</text>
            </returns>
            <param name="lhs">
              <text>The left operand</text>
            </param>
            <param name="rhs">
              <text>The right operand</text>
            </param>
          </doc>
        </function>
      </template>
      <template>
        <tparam name="T" class="type"/>
        <tparam name="U" class="type"/>
        <function name="operator!=" requires="detail::optional_ne_rel&lt;T, U&gt;" id="60GHDiC6o64xbYKp83E3A5iPrhE=">
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1229" class="def"/>
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="125"/>
          <attr id="constexpr-kind" name="constexpr" value="1"/>
          <attr id="operator" name="not_eq" value="29"/>
          <return>
            <type name="bool"/>
          </return>
          <param name="lhs">
            <type class="lvalue-reference">
              <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;T&gt;" cv-qualifiers="const"/>
            </type>
          </param>
          <param name="rhs">
            <type class="lvalue-reference">
              <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;U&gt;" cv-qualifiers="const"/>
            </type>
          </param>
          <doc>
            <brief>
              <text>Inequality operator</text>
            </brief>
            <returns>
              <mono>true</mono>
              <text> if the objects are not equal, </text>
              <mono>false</mono>
              <text> otherwise</text>
            </returns>
            <param name="lhs">
              <text>The left operand</text>
            </param>
            <param name="rhs">
              <text>The right operand</text>
            </param>
            <relates>
              <reference id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=">optional</reference>
            </relates>
          </doc>
        </function>
      </template>
      <template>
        <tparam name="T" class="type"/>
        <tparam name="U" class="type"/>
        <function name="operator!=" requires="detail::optional_ne_rel&lt;T, U&gt;" id="2G159R1+8b1xkOK9u3FF3QDcAUY=">
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1295" class="def"/>
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="156"/>
          <attr id="constexpr-kind" name="constexpr" value="1"/>
          <attr id="operator" name="not_eq" value="29"/>
          <return>
            <type name="bool"/>
          </return>
          <param name="lhs">
            <type class="lvalue-reference">
              <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;T&gt;" cv-qualifiers="const"/>
            </type>
          </param>
          <param name="rhs">
            <type class="lvalue-reference">
              <pointee-type name="U" cv-qualifiers="const"/>
            </type>
          </param>
          <doc>
            <brief>
              <text>Inequality operator</text>
            </brief>
            <returns>
              <mono>true</mono>
              <text> if the objects are not equal, </text>
              <mono>false</mono>
              <text> otherwise</text>
            </returns>
            <param name="lhs">
              <text>The left operand</text>
            </param>
            <param name="rhs">
              <text>The right operand</text>
            </param>
            <relates>
              <reference id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=">optional</reference>
            </relates>
          </doc>
        </function>
      </template>
      <template>
        <tparam name="T" class="type"/>
        <tparam name="U" class="type"/>
        <function name="operator!=" requires="detail::optional_ne_rel&lt;T, U&gt;" id="1SR8jKCo/+PLXmlvDiRPyiRBZPs=">
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1302" class="def"/>
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="159"/>
          <attr id="constexpr-kind" name="constexpr" value="1"/>
          <attr id="operator" name="not_eq" value="29"/>
          <return>
            <type name="bool"/>
          </return>
          <param name="lhs">
            <type class="lvalue-reference">
              <pointee-type name="T" cv-qualifiers="const"/>
            </type>
          </param>
          <param name="rhs">
            <type class="lvalue-reference">
              <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;U&gt;" cv-qualifiers="const"/>
            </type>
          </param>
          <doc>
            <brief>
              <text>Inequality operator</text>
            </brief>
            <returns>
              <mono>true</mono>
              <text> if the objects are not equal, </text>
              <mono>false</mono>
              <text> otherwise</text>
            </returns>
            <param name="lhs">
              <text>The left operand</text>
            </param>
            <param name="rhs">
              <text>The right operand</text>
            </param>
          </doc>
        </function>
      </template>
      <template>
        <tparam name="T" class="type"/>
        <tparam name="U" class="type"/>
        <function name="operator&lt;" requires="detail::optional_lt_rel&lt;T, U&gt;" id="1H2o8wwBLBtfWFOcBX54+6RBLVU=">
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1236" class="def"/>
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="128"/>
          <attr id="constexpr-kind" name="constexpr" value="1"/>
          <attr id="operator" name="lt" value="30"/>
          <return>
            <type name="bool"/>
          </return>
          <param name="lhs">
            <type class="lvalue-reference">
              <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;T&gt;" cv-qualifiers="const"/>
            </type>
          </param>
          <param name="rhs">
            <type class="lvalue-reference">
              <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;U&gt;" cv-qualifiers="const"/>
            </type>
          </param>
          <doc>
            <brief>
              <text>Less-than operator</text>
            </brief>
            <returns>
              <mono>true</mono>
              <text> if the left object is less than the right object, </text>
              <mono>false</mono>
              <text> otherwise</text>
            </returns>
            <param name="lhs">
              <text>The left operand</text>
            </param>
            <param name="rhs">
              <text>The right operand</text>
            </param>
            <relates>
              <reference id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=">optional</reference>
            </relates>
          </doc>
        </function>
      </template>
      <template>
        <tparam name="T" class="type"/>
        <tparam name="U" class="type"/>
        <function name="operator&lt;" requires="detail::optional_lt_rel&lt;T, U&gt;" id="jqNZVersCFRVodB+gdVnvZn9RP4=">
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1309" class="def"/>
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="162"/>
          <attr id="constexpr-kind" name="constexpr" value="1"/>
          <attr id="operator" name="lt" value="30"/>
          <return>
            <type name="bool"/>
          </return>
          <param name="lhs">
            <type class="lvalue-reference">
              <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;T&gt;" cv-qualifiers="const"/>
            </type>
          </param>
          <param name="rhs">
            <type class="lvalue-reference">
              <pointee-type name="U" cv-qualifiers="const"/>
            </type>
          </param>
          <doc>
            <brief>
              <text>Less-than operator</text>
            </brief>
            <returns>
              <mono>true</mono>
              <text> if the left object is less than the right object, </text>
              <mono>false</mono>
              <text> otherwise</text>
            </returns>
            <param name="lhs">
              <text>The left operand</text>
            </param>
            <param name="rhs">
              <text>The right operand</text>
            </param>
            <relates>
              <reference id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=">optional</reference>
            </relates>
          </doc>
        </function>
      </template>
      <template>
        <tparam name="T" class="type"/>
        <tparam name="U" class="type"/>
        <function name="operator&lt;" requires="detail::optional_lt_rel&lt;T, U&gt;" id="Q3zo2xz+co6fbUCszzlZM+qhN6k=">
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1316" class="def"/>
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="165"/>
          <attr id="constexpr-kind" name="constexpr" value="1"/>
          <attr id="operator" name="lt" value="30"/>
          <return>
            <type name="bool"/>
          </return>
          <param name="lhs">
            <type class="lvalue-reference">
              <pointee-type name="T" cv-qualifiers="const"/>
            </type>
          </param>
          <param name="rhs">
            <type class="lvalue-reference">
              <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;U&gt;" cv-qualifiers="const"/>
            </type>
          </param>
          <doc>
            <brief>
              <text>Less-than operator</text>
            </brief>
            <returns>
              <mono>true</mono>
              <text> if the left object is less than the right object, </text>
              <mono>false</mono>
              <text> otherwise</text>
            </returns>
            <param name="lhs">
              <text>The left operand</text>
            </param>
            <param name="rhs">
              <text>The right operand</text>
            </param>
          </doc>
        </function>
      </template>
      <template>
        <tparam name="T" class="type"/>
        <tparam name="U" class="type"/>
        <function name="operator&lt;=" requires="detail::optional_le_rel&lt;T, U&gt;" id="FWQR8LQnPEO5+/SRa8W4Zc4jDlQ=">
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1250" class="def"/>
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="134"/>
          <attr id="constexpr-kind" name="constexpr" value="1"/>
          <attr id="operator" name="le" value="31"/>
          <return>
            <type name="bool"/>
          </return>
          <param name="lhs">
            <type class="lvalue-reference">
              <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;T&gt;" cv-qualifiers="const"/>
            </type>
          </param>
          <param name="rhs">
            <type class="lvalue-reference">
              <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;U&gt;" cv-qualifiers="const"/>
            </type>
          </param>
          <doc>
            <brief>
              <text>Less-than-or-equal operator</text>
            </brief>
            <returns>
              <mono>true</mono>
              <text> if the left object is less than or equal to the right object, </text>
              <mono>false</mono>
              <text> otherwise</text>
            </returns>
            <param name="lhs">
              <text>The left operand</text>
            </param>
            <param name="rhs">
              <text>The right operand</text>
            </param>
            <relates>
              <reference id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=">optional</reference>
            </relates>
          </doc>
        </function>
      </template>
      <template>
        <tparam name="T" class="type"/>
        <tparam name="U" class="type"/>
        <function name="operator&lt;=" requires="detail::optional_le_rel&lt;T, U&gt;" id="+NwYIqZvYZCJp+QAWW6cbbSYqVU=">
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1337" class="def"/>
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="174"/>
          <attr id="constexpr-kind" name="constexpr" value="1"/>
          <attr id="operator" name="le" value="31"/>
          <return>
            <type name="bool"/>
          </return>
          <param name="lhs">
            <type class="lvalue-reference">
              <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;T&gt;" cv-qualifiers="const"/>
            </type>
          </param>
          <param name="rhs">
            <type class="lvalue-reference">
              <pointee-type name="U" cv-qualifiers="const"/>
            </type>
          </param>
          <doc>
            <brief>
              <text>Less-than-or-equal operator</text>
            </brief>
            <returns>
              <mono>true</mono>
              <text> if the left object is less than or equal to the right object, </text>
              <mono>false</mono>
              <text> otherwise</text>
            </returns>
            <param name="lhs">
              <text>The left operand</text>
            </param>
            <param name="rhs">
              <text>The right operand</text>
            </param>
            <relates>
              <reference id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=">optional</reference>
            </relates>
          </doc>
        </function>
      </template>
      <template>
        <tparam name="T" class="type"/>
        <tparam name="U" class="type"/>
        <function name="operator&lt;=" requires="detail::optional_le_rel&lt;T, U&gt;" id="wDJCUq1O0t9CKaGwSJFDFgao8ow=">
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1344" class="def"/>
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="177"/>
          <attr id="constexpr-kind" name="constexpr" value="1"/>
          <attr id="operator" name="le" value="31"/>
          <return>
            <type name="bool"/>
          </return>
          <param name="lhs">
            <type class="lvalue-reference">
              <pointee-type name="T" cv-qualifiers="const"/>
            </type>
          </param>
          <param name="rhs">
            <type class="lvalue-reference">
              <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;U&gt;" cv-qualifiers="const"/>
            </type>
          </param>
          <doc>
            <brief>
              <text>Less-than-or-equal operator</text>
            </brief>
            <returns>
              <mono>true</mono>
              <text> if the left object is less than or equal to the right object, </text>
              <mono>false</mono>
              <text> otherwise</text>
            </returns>
            <param name="lhs">
              <text>The left operand</text>
            </param>
            <param name="rhs">
              <text>The right operand</text>
            </param>
          </doc>
        </function>
      </template>
      <template>
        <tparam name="T" class="type"/>
        <tparam name="U" class="type"/>
        <function name="operator&gt;" requires="detail::optional_gt_rel&lt;T, U&gt;" id="hMFh4M52EIPFjJB+10a7s1LJuzw=">
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1243" class="def"/>
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="131"/>
          <attr id="constexpr-kind" name="constexpr" value="1"/>
          <attr id="operator" name="gt" value="32"/>
          <return>
            <type name="bool"/>
          </return>
          <param name="lhs">
            <type class="lvalue-reference">
              <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;T&gt;" cv-qualifiers="const"/>
            </type>
          </param>
          <param name="rhs">
            <type class="lvalue-reference">
              <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;U&gt;" cv-qualifiers="const"/>
            </type>
          </param>
          <doc>
            <brief>
              <text>Greater-than operator</text>
            </brief>
            <returns>
              <mono>true</mono>
              <text> if the left object is greater than the right object, </text>
              <mono>false</mono>
              <text> otherwise</text>
            </returns>
            <param name="lhs">
              <text>The left operand</text>
            </param>
            <param name="rhs">
              <text>The right operand</text>
            </param>
            <relates>
              <reference id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=">optional</reference>
            </relates>
          </doc>
        </function>
      </template>
      <template>
        <tparam name="T" class="type"/>
        <tparam name="U" class="type"/>
        <function name="operator&gt;" requires="detail::optional_gt_rel&lt;T, U&gt;" id="0xp8ORXBP85+U8pJtrI9nkQUumg=">
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1323" class="def"/>
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="168"/>
          <attr id="constexpr-kind" name="constexpr" value="1"/>
          <attr id="operator" name="gt" value="32"/>
          <return>
            <type name="bool"/>
          </return>
          <param name="lhs">
            <type class="lvalue-reference">
              <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;T&gt;" cv-qualifiers="const"/>
            </type>
          </param>
          <param name="rhs">
            <type class="lvalue-reference">
              <pointee-type name="U" cv-qualifiers="const"/>
            </type>
          </param>
          <doc>
            <brief>
              <text>Greater-than operator</text>
            </brief>
            <returns>
              <mono>true</mono>
              <text> if the left object is greater than the right object, </text>
              <mono>false</mono>
              <text> otherwise</text>
            </returns>
            <param name="lhs">
              <text>The left operand</text>
            </param>
            <param name="rhs">
              <text>The right operand</text>
            </param>
            <relates>
              <reference id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=">optional</reference>
            </relates>
          </doc>
        </function>
      </template>
      <template>
        <tparam name="T" class="type"/>
        <tparam name="U" class="type"/>
        <function name="operator&gt;" requires="detail::optional_gt_rel&lt;T, U&gt;" id="MmqVacvEYzB7Pa687CdgZ8+52JI=">
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1330" class="def"/>
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="171"/>
          <attr id="constexpr-kind" name="constexpr" value="1"/>
          <attr id="operator" name="gt" value="32"/>
          <return>
            <type name="bool"/>
          </return>
          <param name="lhs">
            <type class="lvalue-reference">
              <pointee-type name="T" cv-qualifiers="const"/>
            </type>
          </param>
          <param name="rhs">
            <type class="lvalue-reference">
              <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;U&gt;" cv-qualifiers="const"/>
            </type>
          </param>
          <doc>
            <brief>
              <text>Greater-than operator</text>
            </brief>
            <returns>
              <mono>true</mono>
              <text> if the left object is greater than the right object, </text>
              <mono>false</mono>
              <text> otherwise</text>
            </returns>
            <param name="lhs">
              <text>The left operand</text>
            </param>
            <param name="rhs">
              <text>The right operand</text>
            </param>
          </doc>
        </function>
      </template>
      <template>
        <tparam name="T" class="type"/>
        <tparam name="U" class="type"/>
        <function name="operator&gt;=" requires="detail::optional_ge_rel&lt;T, U&gt;" id="8yrDHvDuwqixD59O2cuFDo+EtbE=">
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1257" class="def"/>
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="137"/>
          <attr id="constexpr-kind" name="constexpr" value="1"/>
          <attr id="operator" name="ge" value="33"/>
          <return>
            <type name="bool"/>
          </return>
          <param name="lhs">
            <type class="lvalue-reference">
              <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;T&gt;" cv-qualifiers="const"/>
            </type>
          </param>
          <param name="rhs">
            <type class="lvalue-reference">
              <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;U&gt;" cv-qualifiers="const"/>
            </type>
          </param>
          <doc>
            <brief>
              <text>Greater-than-or-equal operator</text>
            </brief>
            <returns>
              <mono>true</mono>
              <text> if the left object is greater than or equal to the right object, </text>
              <mono>false</mono>
              <text> otherwise</text>
            </returns>
            <param name="lhs">
              <text>The left operand</text>
            </param>
            <param name="rhs">
              <text>The right operand</text>
            </param>
            <relates>
              <reference id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=">optional</reference>
            </relates>
          </doc>
        </function>
      </template>
      <template>
        <tparam name="T" class="type"/>
        <tparam name="U" class="type"/>
        <function name="operator&gt;=" requires="detail::optional_ge_rel&lt;T, U&gt;" id="CzwIKHqqfNwhTTh8LWJ/LcPwrTA=">
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1351" class="def"/>
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="180"/>
          <attr id="constexpr-kind" name="constexpr" value="1"/>
          <attr id="operator" name="ge" value="33"/>
          <return>
            <type name="bool"/>
          </return>
          <param name="lhs">
            <type class="lvalue-reference">
              <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;T&gt;" cv-qualifiers="const"/>
            </type>
          </param>
          <param name="rhs">
            <type class="lvalue-reference">
              <pointee-type name="U" cv-qualifiers="const"/>
            </type>
          </param>
          <doc>
            <brief>
              <text>Greater-than-or-equal operator</text>
            </brief>
            <returns>
              <mono>true</mono>
              <text> if the left object is greater than or equal to the right object, </text>
              <mono>false</mono>
              <text> otherwise</text>
            </returns>
            <param name="lhs">
              <text>The left operand</text>
            </param>
            <param name="rhs">
              <text>The right operand</text>
            </param>
            <relates>
              <reference id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=">optional</reference>
            </relates>
          </doc>
        </function>
      </template>
      <template>
        <tparam name="T" class="type"/>
        <tparam name="U" class="type"/>
        <function name="operator&gt;=" requires="detail::optional_ge_rel&lt;T, U&gt;" id="08Dphw9EwUFrQNt+fAd0HKU/v5s=">
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1358" class="def"/>
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="183"/>
          <attr id="constexpr-kind" name="constexpr" value="1"/>
          <attr id="operator" name="ge" value="33"/>
          <return>
            <type name="bool"/>
          </return>
          <param name="lhs">
            <type class="lvalue-reference">
              <pointee-type name="T" cv-qualifiers="const"/>
            </type>
          </param>
          <param name="rhs">
            <type class="lvalue-reference">
              <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;U&gt;" cv-qualifiers="const"/>
            </type>
          </param>
          <doc>
            <brief>
              <text>Greater-than-or-equal operator</text>
            </brief>
            <returns>
              <mono>true</mono>
              <text> if the left object is greater than or equal to the right object, </text>
              <mono>false</mono>
              <text> otherwise</text>
            </returns>
            <param name="lhs">
              <text>The left operand</text>
            </param>
            <param name="rhs">
              <text>The right operand</text>
            </param>
          </doc>
        </function>
      </template>
      <template>
        <tparam name="T" class="type"/>
        <tparam name="U" class="type"/>
        <function name="operator&lt;=&gt;" id="oZ/Q3kZAAYQO6muhk5IE/0cosl8=">
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1264" class="def"/>
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="140"/>
          <attr id="constexpr-kind" name="constexpr" value="1"/>
          <attr id="operator" name="3way" value="34"/>
          <return>
            <type id="brDJvrRovf/1lL++aNtctsVs6X8=" name="std::compare_three_way_result_t&lt;T, U&gt;"/>
          </return>
          <param name="x">
            <type class="lvalue-reference">
              <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;T&gt;" cv-qualifiers="const"/>
            </type>
          </param>
          <param name="y">
            <type class="lvalue-reference">
              <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;U&gt;" cv-qualifiers="const"/>
            </type>
          </param>
          <doc>
            <brief>
              <text>Three-way comparison operator</text>
            </brief>
            <returns>
              <text>The relative order of the objects</text>
            </returns>
            <param name="x">
              <text>The left operand</text>
            </param>
            <param name="y">
              <text>The right operand</text>
            </param>
            <relates>
              <reference id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=">optional</reference>
            </relates>
          </doc>
        </function>
      </template>
      <template>
        <tparam name="T" class="type"/>
        <function name="operator&lt;=&gt;" exception-spec="noexcept" id="IfkDVJSV2flpvCynxbI2epwCDok=">
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1275" class="def"/>
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="146"/>
          <attr id="constexpr-kind" name="constexpr" value="1"/>
          <attr id="operator" name="3way" value="34"/>
          <return>
            <type id="Y9RpWVoCybaJTuXhIF8SU97l81E=" name="std::strong_ordering"/>
          </return>
          <param name="x">
            <type class="lvalue-reference">
              <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;T&gt;" cv-qualifiers="const"/>
            </type>
          </param>
          <param name="rhs">
            <type id="qm9ez48c7jM2APsMBjONlFHv85U=" name="nullopt_t"/>
          </param>
          <doc>
            <brief>
              <text>Three-way comparison operator</text>
            </brief>
            <returns>
              <text>The relative order of the objects</text>
            </returns>
            <param name="x">
              <text>The left operand</text>
            </param>
            <param name="rhs">
              <text>The right operand</text>
            </param>
            <relates>
              <reference id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=">optional</reference>
            </relates>
          </doc>
        </function>
      </template>
      <template requires="(!is_derived_from_optional&lt;U&gt;) &amp;&amp; std::three_way_comparable_with&lt;T, U&gt;">
        <tparam name="T" class="type"/>
        <tparam name="U" class="type"/>
        <function name="operator&lt;=&gt;" id="ALNR0WlTuqs/eQj6xIW2qGvA1zM=">
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="1365" class="def"/>
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="186"/>
          <attr id="constexpr-kind" name="constexpr" value="1"/>
          <attr id="operator" name="3way" value="34"/>
          <return>
            <type id="brDJvrRovf/1lL++aNtctsVs6X8=" name="std::compare_three_way_result_t&lt;T, U&gt;"/>
          </return>
          <param name="x">
            <type class="lvalue-reference">
              <pointee-type id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=" name="optional&lt;T&gt;" cv-qualifiers="const"/>
            </type>
          </param>
          <param name="v">
            <type class="lvalue-reference">
              <pointee-type name="U" cv-qualifiers="const"/>
            </type>
          </param>
          <doc>
            <brief>
              <text>Three-way comparison operator</text>
            </brief>
            <returns>
              <text>The relative order of the objects</text>
            </returns>
            <param name="x">
              <text>The left operand</text>
            </param>
            <param name="v">
              <text>The right operand</text>
            </param>
            <relates>
              <reference id="Pvkqsm2J3WYxmvM1xBy22WjfJxg=">optional</reference>
            </relates>
          </doc>
        </function>
      </template>
      <variable name="in_place" id="LGxPsHTRkREspc6wFZCA+H1/yPk=" default="in_place{}">
        <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="68" class="def"/>
        <attr id="is-inline"/>
        <attr id="is-constexpr"/>
        <type id="mwtFNA7SiRZ2GcsbxvFhVCUxbJs=" name="in_place_t"/>
      </variable>
      <variable name="nullopt" id="XJiUqbGEdK6DROB3Nrm3UwVrXzc=" default="nullopt{nullopt_t::Tag::tag}">
        <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="116" class="def"/>
        <attr id="is-inline"/>
        <attr id="is-constexpr"/>
        <type id="qm9ez48c7jM2APsMBjONlFHv85U=" name="nullopt_t"/>
        <doc>
          <brief>
            <text>Tag to disengage optional objects.</text>
          </brief>
        </doc>
      </variable>
      <template>
        <tparam name="T" class="type"/>
        <concept name="is_derived_from_optional" id="9xISP7ucNqSnlc7wjTUi6kniZpI=" constraint="requires(const T&amp; t) { // exposition only
    []&lt;class U&gt;(const optional&lt;U&gt;&amp;) {}(t);
}">
          <file short-path="beman/optional/optional.hpp" source-path="include/beman/optional/optional.hpp" line="92"/>
        </concept>
      </template>
    </namespace>
  </namespace>
</namespace>
</mrdocs>
