func.is_constexpr = True
else:
func.is_constexpr = False
+ # When 1.8.18 encounters `constexpr static`, it keeps the static there. For
+ # `static constexpr` it doesn't. In both cases the static="yes" is put
+ # there correctly. WHY DOXYGEN, WHY?!
+ if func.type.startswith('static'):
+ func.type = func.type[7:]
func.prefix = ''
func.is_explicit = element.attrib['explicit'] == 'yes'
func.is_virtual = element.attrib['virt'] != 'non-virtual'
<section id="pub-static-attribs">
<h2><a href="#pub-static-attribs">Public static variables</a></h2>
<dl class="m-doc">
- <dt id="a37f97d663491ff54fda7f9cfc3080006">
- static int <a href="#a37f97d663491ff54fda7f9cfc3080006" class="m-doc-self">Size</a> <span class="m-label m-flat m-primary">constexpr</span>
+ <dt id="a912d8f1390853f90e0a9f19ec98771e6">
+ static static int <a href="#a912d8f1390853f90e0a9f19ec98771e6" class="m-doc-self">Size</a> <span class="m-label m-flat m-primary">constexpr</span>
</dt>
<dd>A public static var.</dd>
</dl>
#include <type_traits>
-/** @brief Pathological cases of noexcept */
+/** @brief Pathological cases of function attributes */
struct Foo {
+ /**
+ * @brief Constexpr before static
+ *
+ * 1.8.18 puts both `constexpr` and `static` into the return type so I have
+ * to remove them. WHY! HOW IS THAT USEFUL IN ANY WAY?!
+ */
+ constexpr static int constexprStaticFunction();
+
+ /**
+ * @brief Constexpr after static
+ *
+ * In this case, `static` is not in the return type. FFS.
+ */
+ static constexpr int staticConstexprFunction();
+
/**
* @brief Combined default and noexcept
*
<h1>
Foo <span class="m-thin">struct</span>
</h1>
- <p>Pathological cases of noexcept.</p>
+ <p>Pathological cases of function attributes.</p>
<div class="m-block m-default">
<h3>Contents</h3>
<ul>
<li>
Reference
<ul>
+ <li><a href="#pub-static-methods">Public static functions</a></li>
<li><a href="#typeless-methods">Constructors, destructors, conversion operators</a></li>
<li><a href="#pub-methods">Public functions</a></li>
</ul>
</li>
</ul>
</div>
+ <section id="pub-static-methods">
+ <h2><a href="#pub-static-methods">Public static functions</a></h2>
+ <dl class="m-doc">
+ <dt>
+ <span class="m-doc-wrap-bumper">static auto <a href="#a77f46786436a39eb3b53343580f41b89" class="m-doc">constexprStaticFunction</a>(</span><span class="m-doc-wrap">) -> int <span class="m-label m-flat m-primary">constexpr</span></span>
+ </dt>
+ <dd>Constexpr before static.</dd>
+ <dt>
+ <span class="m-doc-wrap-bumper">static auto <a href="#a178c5f6f19fa2ffb1fc7a346e2e877d9" class="m-doc">staticConstexprFunction</a>(</span><span class="m-doc-wrap">) -> int <span class="m-label m-flat m-primary">constexpr</span></span>
+ </dt>
+ <dd>Constexpr after static.</dd>
+ </dl>
+ </section>
<section id="typeless-methods">
<h2><a href="#typeless-methods">Constructors, destructors, conversion operators</a></h2>
<dl class="m-doc">
</section>
<section>
<h2>Function documentation</h2>
+ <section class="m-doc-details" id="a77f46786436a39eb3b53343580f41b89"><div>
+ <h3>
+ <span class="m-doc-wrap-bumper">static int Foo::<wbr /></span><span class="m-doc-wrap"><span class="m-doc-wrap-bumper"><a href="#a77f46786436a39eb3b53343580f41b89" class="m-doc-self">constexprStaticFunction</a>(</span><span class="m-doc-wrap">) <span class="m-label m-primary">constexpr</span></span></span>
+ </h3>
+ <p>Constexpr before static.</p>
+<p>1.8.18 puts both <code>constexpr</code> and <code>static</code> into the return type so I have to remove them. WHY! HOW IS THAT USEFUL IN ANY WAY?!</p>
+ </div></section>
+ <section class="m-doc-details" id="a178c5f6f19fa2ffb1fc7a346e2e877d9"><div>
+ <h3>
+ <span class="m-doc-wrap-bumper">static int Foo::<wbr /></span><span class="m-doc-wrap"><span class="m-doc-wrap-bumper"><a href="#a178c5f6f19fa2ffb1fc7a346e2e877d9" class="m-doc-self">staticConstexprFunction</a>(</span><span class="m-doc-wrap">) <span class="m-label m-primary">constexpr</span></span></span>
+ </h3>
+ <p>Constexpr after static.</p>
+<p>In this case, <code>static</code> is not in the return type. FFS.</p>
+ </div></section>
<section class="m-doc-details" id="ad5953d17211071264b501747c67e6fdc"><div>
<h3>
<span class="m-doc-wrap-bumper"> Foo::<wbr /></span><span class="m-doc-wrap"><span class="m-doc-wrap-bumper"><a href="#ad5953d17211071264b501747c67e6fdc" class="m-doc-self">Foo</a>(</span><span class="m-doc-wrap"><a href="structFoo.html" class="m-doc">Foo</a>&&) <span class="m-label m-info">defaulted</span> <span class="m-label m-success">noexcept</span></span></span>