diff options
author | Dimitri van Heesch <dimitri@stack.nl> | 2017-12-27 18:35:57 (GMT) |
---|---|---|
committer | Dimitri van Heesch <dimitri@stack.nl> | 2017-12-27 18:35:57 (GMT) |
commit | 3a356ac57960643cd9433e183e0635e467e38a87 (patch) | |
tree | 8e9d00ed84d6f648aeb7f911faeb05e0d1a6cfd6 /testing | |
parent | 27731a36c182f672fe4486c4a9ae390c4ee8a10f (diff) | |
parent | 818f0458205a2965f0a676265e2454450a4c3455 (diff) | |
download | Doxygen-3a356ac57960643cd9433e183e0635e467e38a87.zip Doxygen-3a356ac57960643cd9433e183e0635e467e38a87.tar.gz Doxygen-3a356ac57960643cd9433e183e0635e467e38a87.tar.bz2 |
Merge branch 'variadic' of https://github.com/mehw/doxygen into mehw-variadic
Diffstat (limited to 'testing')
-rw-r--r-- | testing/067/067__link__varargs_8cpp.xml | 54 | ||||
-rw-r--r-- | testing/067_link_varargs.cpp | 20 | ||||
-rw-r--r-- | testing/068/068__ref__varargs_8cpp.xml | 54 | ||||
-rw-r--r-- | testing/068_ref_varargs.cpp | 20 | ||||
-rw-r--r-- | testing/069/069__link__variadic__template_8cpp.xml | 309 | ||||
-rw-r--r-- | testing/069_link_variadic_template.cpp | 95 | ||||
-rw-r--r-- | testing/070/070__ref__variadic__template_8cpp.xml | 309 | ||||
-rw-r--r-- | testing/070_ref_variadic_template.cpp | 95 |
8 files changed, 956 insertions, 0 deletions
diff --git a/testing/067/067__link__varargs_8cpp.xml b/testing/067/067__link__varargs_8cpp.xml new file mode 100644 index 0000000..76eb543 --- /dev/null +++ b/testing/067/067__link__varargs_8cpp.xml @@ -0,0 +1,54 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version=""> + <compounddef id="067__link__varargs_8cpp" kind="file" language="C++"> + <compoundname>067_link_varargs.cpp</compoundname> + <innerclass refid="class_test" prot="public">Test</innerclass> + <sectiondef kind="func"> + <memberdef kind="function" id="067__link__varargs_8cpp_1affb6da6cff1b57cdf8efc0123dceac9b" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type>void</type> + <definition>void func</definition> + <argsstring>(int p)</argsstring> + <name>func</name> + <param> + <type>int</type> + <declname>p</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + <para>A function </para> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="067_link_varargs.cpp" line="11" column="1"/> + </memberdef> + <memberdef kind="function" id="067__link__varargs_8cpp_1a106e01084409028d1b41f5ad83fb82c1" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type>void</type> + <definition>void func</definition> + <argsstring>(int p,...)</argsstring> + <name>func</name> + <param> + <type>int</type> + <declname>p</declname> + </param> + <param> + <type>...</type> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + <para>Overloaded function taking variadic arguments </para> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="067_link_varargs.cpp" line="15" column="1"/> + </memberdef> + </sectiondef> + <briefdescription> + </briefdescription> + <detaileddescription> + <para>See <ref refid="067__link__varargs_8cpp_1a106e01084409028d1b41f5ad83fb82c1" kindref="member">the function</ref> for more info. See the <ref refid="class_test" kindref="compound">test</ref> class. </para> + </detaileddescription> + <location file="067_link_varargs.cpp"/> + </compounddef> +</doxygen> diff --git a/testing/067_link_varargs.cpp b/testing/067_link_varargs.cpp new file mode 100644 index 0000000..8cf25a2 --- /dev/null +++ b/testing/067_link_varargs.cpp @@ -0,0 +1,20 @@ +// objective: test \link command with function variadic arguments '...' +// check: 067__link__varargs_8cpp.xml + +/** \file + * See \link func(int,...) the function\endlink for more info. + * See the \link Test test\endlink class. + */ + +/** A function + */ +void func(int p); + +/** Overloaded function taking variadic arguments + */ +void func(int p, ...); + +/** A test */ +class Test +{ +}; diff --git a/testing/068/068__ref__varargs_8cpp.xml b/testing/068/068__ref__varargs_8cpp.xml new file mode 100644 index 0000000..8e0dc00 --- /dev/null +++ b/testing/068/068__ref__varargs_8cpp.xml @@ -0,0 +1,54 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version=""> + <compounddef id="068__ref__varargs_8cpp" kind="file" language="C++"> + <compoundname>068_ref_varargs.cpp</compoundname> + <innerclass refid="class_test" prot="public">Test</innerclass> + <sectiondef kind="func"> + <memberdef kind="function" id="068__ref__varargs_8cpp_1affb6da6cff1b57cdf8efc0123dceac9b" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type>void</type> + <definition>void func</definition> + <argsstring>(int p)</argsstring> + <name>func</name> + <param> + <type>int</type> + <declname>p</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + <para>A function </para> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="068_ref_varargs.cpp" line="11" column="1"/> + </memberdef> + <memberdef kind="function" id="068__ref__varargs_8cpp_1a106e01084409028d1b41f5ad83fb82c1" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type>void</type> + <definition>void func</definition> + <argsstring>(int p,...)</argsstring> + <name>func</name> + <param> + <type>int</type> + <declname>p</declname> + </param> + <param> + <type>...</type> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + <para>Overloaded function taking variadic arguments </para> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="068_ref_varargs.cpp" line="15" column="1"/> + </memberdef> + </sectiondef> + <briefdescription> + </briefdescription> + <detaileddescription> + <para>See <ref refid="068__ref__varargs_8cpp_1a106e01084409028d1b41f5ad83fb82c1" kindref="member">the function</ref> for more info. See the <ref refid="class_test" kindref="compound">test</ref> class. </para> + </detaileddescription> + <location file="068_ref_varargs.cpp"/> + </compounddef> +</doxygen> diff --git a/testing/068_ref_varargs.cpp b/testing/068_ref_varargs.cpp new file mode 100644 index 0000000..c85daa2 --- /dev/null +++ b/testing/068_ref_varargs.cpp @@ -0,0 +1,20 @@ +// objective: test \ref command with function variadic arguments '...' +// check: 068__ref__varargs_8cpp.xml + +/** \file + * See \ref func(int,...) "the function" for more info. + * See the \ref Test "test" class. + */ + +/** A function + */ +void func(int p); + +/** Overloaded function taking variadic arguments + */ +void func(int p, ...); + +/** A test */ +class Test +{ +}; diff --git a/testing/069/069__link__variadic__template_8cpp.xml b/testing/069/069__link__variadic__template_8cpp.xml new file mode 100644 index 0000000..c93a732 --- /dev/null +++ b/testing/069/069__link__variadic__template_8cpp.xml @@ -0,0 +1,309 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version=""> + <compounddef id="069__link__variadic__template_8cpp" kind="file" language="C++"> + <compoundname>069_link_variadic_template.cpp</compoundname> + <innerclass refid="class_test" prot="public">Test</innerclass> + <sectiondef kind="func"> + <memberdef kind="function" id="069__link__variadic__template_8cpp_1affb6da6cff1b57cdf8efc0123dceac9b" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type>void</type> + <definition>void func</definition> + <argsstring>(int p)</argsstring> + <name>func</name> + <param> + <type>int</type> + <declname>p</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + <para>A function </para> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="069_link_variadic_template.cpp" line="40" column="1"/> + </memberdef> + <memberdef kind="function" id="069__link__variadic__template_8cpp_1aa7e4936a17759246bce60256cf224e16" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <templateparamlist> + <param> + <type>typename...</type> + <declname>Args</declname> + <defname>Args</defname> + </param> + </templateparamlist> + <type>void</type> + <definition>void func</definition> + <argsstring>(int p, Args &... args)</argsstring> + <name>func</name> + <param> + <type>int</type> + <declname>p</declname> + </param> + <param> + <type>Args &...</type> + <declname>args</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + <para>A variadic template function overload </para> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="069_link_variadic_template.cpp" line="45" column="1"/> + </memberdef> + <memberdef kind="function" id="069__link__variadic__template_8cpp_1ad6fc2d2a6cb8980f3e0eaacbd2ae41fe" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <templateparamlist> + <param> + <type>typename...</type> + <declname>Args</declname> + <defname>Args</defname> + </param> + </templateparamlist> + <type>void</type> + <definition>void func</definition> + <argsstring>(int p, Args &&... args)</argsstring> + <name>func</name> + <param> + <type>int</type> + <declname>p</declname> + </param> + <param> + <type>Args &&...</type> + <declname>args</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + <para>A variadic template function overload </para> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="069_link_variadic_template.cpp" line="50" column="1"/> + </memberdef> + <memberdef kind="function" id="069__link__variadic__template_8cpp_1a708a5bf22646ed7233fe61b83182811a" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <templateparamlist> + <param> + <type>typename...</type> + <declname>Args</declname> + <defname>Args</defname> + </param> + </templateparamlist> + <type>void</type> + <definition>void func</definition> + <argsstring>(int p, const Args &... args)</argsstring> + <name>func</name> + <param> + <type>int</type> + <declname>p</declname> + </param> + <param> + <type>const Args &...</type> + <declname>args</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + <para>A variadic template function overload </para> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="069_link_variadic_template.cpp" line="55" column="1"/> + </memberdef> + <memberdef kind="function" id="069__link__variadic__template_8cpp_1aed64c596fea5f4f5e719006539922f7c" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <templateparamlist> + <param> + <type>typename...</type> + <declname>Args</declname> + <defname>Args</defname> + </param> + </templateparamlist> + <type>void</type> + <definition>void func</definition> + <argsstring>(int p, const Args &&... args)</argsstring> + <name>func</name> + <param> + <type>int</type> + <declname>p</declname> + </param> + <param> + <type>const Args &&...</type> + <declname>args</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + <para>A variadic template function overload </para> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="069_link_variadic_template.cpp" line="60" column="1"/> + </memberdef> + <memberdef kind="function" id="069__link__variadic__template_8cpp_1a0ad18d95a1dc2dbacee657c43f719187" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <templateparamlist> + <param> + <type>typename...</type> + <declname>Args</declname> + <defname>Args</defname> + </param> + </templateparamlist> + <type>void</type> + <definition>void func</definition> + <argsstring>(int p, Args *... args)</argsstring> + <name>func</name> + <param> + <type>int</type> + <declname>p</declname> + </param> + <param> + <type>Args *...</type> + <declname>args</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + <para>A variadic template function overload </para> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="069_link_variadic_template.cpp" line="65" column="1"/> + </memberdef> + <memberdef kind="function" id="069__link__variadic__template_8cpp_1a2331eedd0a1db9da5de0ad0faef78a4e" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <templateparamlist> + <param> + <type>typename...</type> + <declname>Args</declname> + <defname>Args</defname> + </param> + </templateparamlist> + <type>void</type> + <definition>void func</definition> + <argsstring>(int p, Args **... args)</argsstring> + <name>func</name> + <param> + <type>int</type> + <declname>p</declname> + </param> + <param> + <type>Args **...</type> + <declname>args</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + <para>A variadic template function overload </para> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="069_link_variadic_template.cpp" line="70" column="1"/> + </memberdef> + <memberdef kind="function" id="069__link__variadic__template_8cpp_1a72bd94e61df947347f98a2a6214e9342" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <templateparamlist> + <param> + <type>typename...</type> + <declname>Args</declname> + <defname>Args</defname> + </param> + </templateparamlist> + <type>void</type> + <definition>void func</definition> + <argsstring>(int p, const Args *... args)</argsstring> + <name>func</name> + <param> + <type>int</type> + <declname>p</declname> + </param> + <param> + <type>const Args *...</type> + <declname>args</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + <para>A variadic template function overload </para> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="069_link_variadic_template.cpp" line="75" column="1"/> + </memberdef> + <memberdef kind="function" id="069__link__variadic__template_8cpp_1a0bd03c39aa36ae51d2b8d87e04cf7eab" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <templateparamlist> + <param> + <type>typename...</type> + <declname>Args</declname> + <defname>Args</defname> + </param> + </templateparamlist> + <type>void</type> + <definition>void func</definition> + <argsstring>(int p, const Args **... args)</argsstring> + <name>func</name> + <param> + <type>int</type> + <declname>p</declname> + </param> + <param> + <type>const Args **...</type> + <declname>args</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + <para>A variadic template function overload </para> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="069_link_variadic_template.cpp" line="80" column="1"/> + </memberdef> + <memberdef kind="function" id="069__link__variadic__template_8cpp_1abb1e0338f72ae46a1240ada65d6a397c" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <templateparamlist> + <param> + <type>typename...</type> + <declname>Args</declname> + <defname>Args</defname> + </param> + </templateparamlist> + <type>void</type> + <definition>void func</definition> + <argsstring>(int p, Args... args)</argsstring> + <name>func</name> + <param> + <type>int</type> + <declname>p</declname> + </param> + <param> + <type>Args...</type> + <declname>args</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + <para>A variadic template function overload </para> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="069_link_variadic_template.cpp" line="85" column="1"/> + </memberdef> + </sectiondef> + <briefdescription> + </briefdescription> + <detaileddescription> + <para> + <simplesect kind="attention"> + <para> + <parblock> + <para>At the time of writing, the part between <> is totally ignored: func<Args...>(Args... args) is interpreted as func(Args... args).</para> + <para>Beware that a function parameter with either a & or * operator, e.g. 'const Args&... args', requires \link and \ref to specify such parameter as verbatim, i.e. 'const Args&... args'. At the time of writing, the form func(const Args&...) will fail, unless the function parameter was declared just as 'const Args&...'. </para> + </parblock> + </para> + </simplesect> + </para> + <para> + <ref refid="class_test_1a64d85df31d518e39726467315a9b05e3" kindref="member">variadic template method</ref> + </para> + <para>Links to the variadic template function overloads: <itemizedlist><listitem><para><ref refid="069__link__variadic__template_8cpp_1aa7e4936a17759246bce60256cf224e16" kindref="member">First overload</ref></para></listitem><listitem><para><ref refid="069__link__variadic__template_8cpp_1ad6fc2d2a6cb8980f3e0eaacbd2ae41fe" kindref="member">Second overload</ref></para></listitem><listitem><para><ref refid="069__link__variadic__template_8cpp_1a708a5bf22646ed7233fe61b83182811a" kindref="member">Third overload</ref></para></listitem><listitem><para><ref refid="069__link__variadic__template_8cpp_1aed64c596fea5f4f5e719006539922f7c" kindref="member">Fourth overload</ref></para></listitem><listitem><para><ref refid="069__link__variadic__template_8cpp_1a0ad18d95a1dc2dbacee657c43f719187" kindref="member">Fifth overload</ref></para></listitem><listitem><para><ref refid="069__link__variadic__template_8cpp_1a2331eedd0a1db9da5de0ad0faef78a4e" kindref="member">Sixth overload</ref></para></listitem><listitem><para><ref refid="069__link__variadic__template_8cpp_1a72bd94e61df947347f98a2a6214e9342" kindref="member">Seventh overload</ref></para></listitem><listitem><para><ref refid="069__link__variadic__template_8cpp_1a0bd03c39aa36ae51d2b8d87e04cf7eab" kindref="member">Eighth overload</ref></para></listitem><listitem><para><ref refid="069__link__variadic__template_8cpp_1abb1e0338f72ae46a1240ada65d6a397c" kindref="member">Ninth overload</ref></para></listitem></itemizedlist> +The followings are interpreted the same: <itemizedlist><listitem><para><ref refid="069__link__variadic__template_8cpp_1a708a5bf22646ed7233fe61b83182811a" kindref="member">without template argument</ref></para></listitem><listitem><para><ref refid="069__link__variadic__template_8cpp_1a708a5bf22646ed7233fe61b83182811a" kindref="member">with template argument</ref></para></listitem></itemizedlist> +See the <ref refid="class_test" kindref="compound">test</ref> class. </para> + </detaileddescription> + <location file="069_link_variadic_template.cpp"/> + </compounddef> +</doxygen> diff --git a/testing/069_link_variadic_template.cpp b/testing/069_link_variadic_template.cpp new file mode 100644 index 0000000..89ab57c --- /dev/null +++ b/testing/069_link_variadic_template.cpp @@ -0,0 +1,95 @@ +// objective: test \link command with a variadic template function +// check: 069__link__variadic__template_8cpp.xml + +/** \file + * + * @attention + * @parblock + * At the time of writing, the part between \<\> is totally ignored: + * %func<Args...>(Args... args) is interpreted as %func(Args... args). + * + * Beware that a function parameter with either a \& or \* operator, + * e.g. 'const Args&... args', requires \\link and \\ref to specify + * such parameter as verbatim, i.e. 'const Args&... args'. At the + * time of writing, the form %func(const Args&...) will fail, unless + * the function parameter was declared just as 'const Args&...'. + * @endparblock + * + * \link Test::func(int,Args...)const variadic template method\endlink + * + * Links to the variadic template function overloads: + * @li \link func(int,Args&... args) First overload\endlink + * @li \link func(int,Args&&... args) Second overload\endlink + * @li \link func(int,const Args&... args) Third overload\endlink + * @li \link func(int,const Args&&... args) Fourth overload\endlink + * @li \link func(int,Args*... args) Fifth overload\endlink + * @li \link func(int,Args**... args) Sixth overload\endlink + * @li \link func(int,const Args*... args) Seventh overload\endlink + * @li \link func(int,const Args**... args) Eighth overload\endlink + * @li \link func(int,Args...) Ninth overload\endlink + * + * The followings are interpreted the same: + * @li \link func(int,const Args&... args) without template argument\endlink + * @li \link func<Args...>(int,const Args&... args) with template argument\endlink + * + * See the \link Test test\endlink class. + */ + +/** A function + */ +void func(int p); + +/** A variadic template function overload + */ +template <typename... Args> +void func(int p, Args&... args); + +/** A variadic template function overload + */ +template <typename... Args> +void func(int p, Args&&... args); + +/** A variadic template function overload + */ +template <typename... Args> +void func(int p, const Args&... args); + +/** A variadic template function overload + */ +template <typename... Args> +void func(int p, const Args&&... args); + +/** A variadic template function overload + */ +template <typename... Args> +void func(int p, Args*... args); + +/** A variadic template function overload + */ +template <typename... Args> +void func(int p, Args**... args); + +/** A variadic template function overload + */ +template <typename... Args> +void func(int p, const Args*... args); + +/** A variadic template function overload + */ +template <typename... Args> +void func(int p, const Args**... args); + +/** A variadic template function overload + */ +template <typename... Args> +void func(int p, Args... args); + +/** A test */ +class Test +{ + public: + /** A variadic template method + */ + template <typename... Args> + void func(int p, Args... args) const; +}; diff --git a/testing/070/070__ref__variadic__template_8cpp.xml b/testing/070/070__ref__variadic__template_8cpp.xml new file mode 100644 index 0000000..0f581e5 --- /dev/null +++ b/testing/070/070__ref__variadic__template_8cpp.xml @@ -0,0 +1,309 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version=""> + <compounddef id="070__ref__variadic__template_8cpp" kind="file" language="C++"> + <compoundname>070_ref_variadic_template.cpp</compoundname> + <innerclass refid="class_test" prot="public">Test</innerclass> + <sectiondef kind="func"> + <memberdef kind="function" id="070__ref__variadic__template_8cpp_1affb6da6cff1b57cdf8efc0123dceac9b" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <type>void</type> + <definition>void func</definition> + <argsstring>(int p)</argsstring> + <name>func</name> + <param> + <type>int</type> + <declname>p</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + <para>A function </para> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="070_ref_variadic_template.cpp" line="40" column="1"/> + </memberdef> + <memberdef kind="function" id="070__ref__variadic__template_8cpp_1aa7e4936a17759246bce60256cf224e16" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <templateparamlist> + <param> + <type>typename...</type> + <declname>Args</declname> + <defname>Args</defname> + </param> + </templateparamlist> + <type>void</type> + <definition>void func</definition> + <argsstring>(int p, Args &... args)</argsstring> + <name>func</name> + <param> + <type>int</type> + <declname>p</declname> + </param> + <param> + <type>Args &...</type> + <declname>args</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + <para>A variadic template function overload </para> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="070_ref_variadic_template.cpp" line="45" column="1"/> + </memberdef> + <memberdef kind="function" id="070__ref__variadic__template_8cpp_1ad6fc2d2a6cb8980f3e0eaacbd2ae41fe" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <templateparamlist> + <param> + <type>typename...</type> + <declname>Args</declname> + <defname>Args</defname> + </param> + </templateparamlist> + <type>void</type> + <definition>void func</definition> + <argsstring>(int p, Args &&... args)</argsstring> + <name>func</name> + <param> + <type>int</type> + <declname>p</declname> + </param> + <param> + <type>Args &&...</type> + <declname>args</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + <para>A variadic template function overload </para> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="070_ref_variadic_template.cpp" line="50" column="1"/> + </memberdef> + <memberdef kind="function" id="070__ref__variadic__template_8cpp_1a708a5bf22646ed7233fe61b83182811a" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <templateparamlist> + <param> + <type>typename...</type> + <declname>Args</declname> + <defname>Args</defname> + </param> + </templateparamlist> + <type>void</type> + <definition>void func</definition> + <argsstring>(int p, const Args &... args)</argsstring> + <name>func</name> + <param> + <type>int</type> + <declname>p</declname> + </param> + <param> + <type>const Args &...</type> + <declname>args</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + <para>A variadic template function overload </para> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="070_ref_variadic_template.cpp" line="55" column="1"/> + </memberdef> + <memberdef kind="function" id="070__ref__variadic__template_8cpp_1aed64c596fea5f4f5e719006539922f7c" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <templateparamlist> + <param> + <type>typename...</type> + <declname>Args</declname> + <defname>Args</defname> + </param> + </templateparamlist> + <type>void</type> + <definition>void func</definition> + <argsstring>(int p, const Args &&... args)</argsstring> + <name>func</name> + <param> + <type>int</type> + <declname>p</declname> + </param> + <param> + <type>const Args &&...</type> + <declname>args</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + <para>A variadic template function overload </para> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="070_ref_variadic_template.cpp" line="60" column="1"/> + </memberdef> + <memberdef kind="function" id="070__ref__variadic__template_8cpp_1a0ad18d95a1dc2dbacee657c43f719187" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <templateparamlist> + <param> + <type>typename...</type> + <declname>Args</declname> + <defname>Args</defname> + </param> + </templateparamlist> + <type>void</type> + <definition>void func</definition> + <argsstring>(int p, Args *... args)</argsstring> + <name>func</name> + <param> + <type>int</type> + <declname>p</declname> + </param> + <param> + <type>Args *...</type> + <declname>args</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + <para>A variadic template function overload </para> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="070_ref_variadic_template.cpp" line="65" column="1"/> + </memberdef> + <memberdef kind="function" id="070__ref__variadic__template_8cpp_1a2331eedd0a1db9da5de0ad0faef78a4e" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <templateparamlist> + <param> + <type>typename...</type> + <declname>Args</declname> + <defname>Args</defname> + </param> + </templateparamlist> + <type>void</type> + <definition>void func</definition> + <argsstring>(int p, Args **... args)</argsstring> + <name>func</name> + <param> + <type>int</type> + <declname>p</declname> + </param> + <param> + <type>Args **...</type> + <declname>args</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + <para>A variadic template function overload </para> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="070_ref_variadic_template.cpp" line="70" column="1"/> + </memberdef> + <memberdef kind="function" id="070__ref__variadic__template_8cpp_1a72bd94e61df947347f98a2a6214e9342" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <templateparamlist> + <param> + <type>typename...</type> + <declname>Args</declname> + <defname>Args</defname> + </param> + </templateparamlist> + <type>void</type> + <definition>void func</definition> + <argsstring>(int p, const Args *... args)</argsstring> + <name>func</name> + <param> + <type>int</type> + <declname>p</declname> + </param> + <param> + <type>const Args *...</type> + <declname>args</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + <para>A variadic template function overload </para> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="070_ref_variadic_template.cpp" line="75" column="1"/> + </memberdef> + <memberdef kind="function" id="070__ref__variadic__template_8cpp_1a0bd03c39aa36ae51d2b8d87e04cf7eab" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <templateparamlist> + <param> + <type>typename...</type> + <declname>Args</declname> + <defname>Args</defname> + </param> + </templateparamlist> + <type>void</type> + <definition>void func</definition> + <argsstring>(int p, const Args **... args)</argsstring> + <name>func</name> + <param> + <type>int</type> + <declname>p</declname> + </param> + <param> + <type>const Args **...</type> + <declname>args</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + <para>A variadic template function overload </para> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="070_ref_variadic_template.cpp" line="80" column="1"/> + </memberdef> + <memberdef kind="function" id="070__ref__variadic__template_8cpp_1abb1e0338f72ae46a1240ada65d6a397c" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual"> + <templateparamlist> + <param> + <type>typename...</type> + <declname>Args</declname> + <defname>Args</defname> + </param> + </templateparamlist> + <type>void</type> + <definition>void func</definition> + <argsstring>(int p, Args... args)</argsstring> + <name>func</name> + <param> + <type>int</type> + <declname>p</declname> + </param> + <param> + <type>Args...</type> + <declname>args</declname> + </param> + <briefdescription> + </briefdescription> + <detaileddescription> + <para>A variadic template function overload </para> + </detaileddescription> + <inbodydescription> + </inbodydescription> + <location file="070_ref_variadic_template.cpp" line="85" column="1"/> + </memberdef> + </sectiondef> + <briefdescription> + </briefdescription> + <detaileddescription> + <para> + <simplesect kind="attention"> + <para> + <parblock> + <para>At the time of writing, the part between <> is totally ignored: func<Args...>(Args... args) is interpreted as func(Args... args).</para> + <para>Beware that a function parameter with either a & or * operator, e.g. 'const Args&... args', requires \link and \ref to specify such parameter as verbatim, i.e. 'const Args&... args'. At the time of writing, the form func(const Args&...) will fail, unless the function parameter was declared just as 'const Args&...'. </para> + </parblock> + </para> + </simplesect> + </para> + <para> + <ref refid="class_test_1a64d85df31d518e39726467315a9b05e3" kindref="member">variadic template method</ref> + </para> + <para>References to the variadic template function overloads: <itemizedlist><listitem><para><ref refid="070__ref__variadic__template_8cpp_1aa7e4936a17759246bce60256cf224e16" kindref="member">First overload</ref></para></listitem><listitem><para><ref refid="070__ref__variadic__template_8cpp_1ad6fc2d2a6cb8980f3e0eaacbd2ae41fe" kindref="member">Second overload</ref></para></listitem><listitem><para><ref refid="070__ref__variadic__template_8cpp_1a708a5bf22646ed7233fe61b83182811a" kindref="member">Third overload</ref></para></listitem><listitem><para><ref refid="070__ref__variadic__template_8cpp_1aed64c596fea5f4f5e719006539922f7c" kindref="member">Fourth overload</ref></para></listitem><listitem><para><ref refid="070__ref__variadic__template_8cpp_1a0ad18d95a1dc2dbacee657c43f719187" kindref="member">Fifth overload</ref></para></listitem><listitem><para><ref refid="070__ref__variadic__template_8cpp_1a2331eedd0a1db9da5de0ad0faef78a4e" kindref="member">Sixth overload</ref></para></listitem><listitem><para><ref refid="070__ref__variadic__template_8cpp_1a72bd94e61df947347f98a2a6214e9342" kindref="member">Seventh overload</ref></para></listitem><listitem><para><ref refid="070__ref__variadic__template_8cpp_1a0bd03c39aa36ae51d2b8d87e04cf7eab" kindref="member">Eighth overload</ref></para></listitem><listitem><para><ref refid="070__ref__variadic__template_8cpp_1abb1e0338f72ae46a1240ada65d6a397c" kindref="member">Ninth overload</ref></para></listitem></itemizedlist> +The followings are interpreted the same: <itemizedlist><listitem><para><ref refid="070__ref__variadic__template_8cpp_1a708a5bf22646ed7233fe61b83182811a" kindref="member">without template argument</ref></para></listitem><listitem><para><ref refid="070__ref__variadic__template_8cpp_1a708a5bf22646ed7233fe61b83182811a" kindref="member">with template argument</ref></para></listitem></itemizedlist> +See the <ref refid="class_test" kindref="compound">test</ref> class. </para> + </detaileddescription> + <location file="070_ref_variadic_template.cpp"/> + </compounddef> +</doxygen> diff --git a/testing/070_ref_variadic_template.cpp b/testing/070_ref_variadic_template.cpp new file mode 100644 index 0000000..376cebe --- /dev/null +++ b/testing/070_ref_variadic_template.cpp @@ -0,0 +1,95 @@ +// objective: test \ref command with a variadic template function +// check: 070__ref__variadic__template_8cpp.xml + +/** \file + * + * @attention + * @parblock + * At the time of writing, the part between \<\> is totally ignored: + * %func<Args...>(Args... args) is interpreted as %func(Args... args). + * + * Beware that a function parameter with either a \& or \* operator, + * e.g. 'const Args&... args', requires \\link and \\ref to specify + * such parameter as verbatim, i.e. 'const Args&... args'. At the + * time of writing, the form %func(const Args&...) will fail, unless + * the function parameter was declared just as 'const Args&...'. + * @endparblock + * + * \ref Test::func(int,Args...)const "variadic template method" + * + * References to the variadic template function overloads: + * @li \ref func(int,Args&... args) "First overload" + * @li \ref func(int,Args&&... args) "Second overload" + * @li \ref func(int,const Args&... args) "Third overload" + * @li \ref func(int,const Args&&... args) "Fourth overload" + * @li \ref func(int,Args*... args) "Fifth overload" + * @li \ref func(int,Args**... args) "Sixth overload" + * @li \ref func(int,const Args*... args) "Seventh overload" + * @li \ref func(int,const Args**... args) "Eighth overload" + * @li \ref func(int,Args...) "Ninth overload" + * + * The followings are interpreted the same: + * @li \ref func(int,const Args&... args) "without template argument" + * @li \ref func<Args...>(int,const Args&... args) "with template argument" + * + * See the \ref Test "test" class. + */ + +/** A function + */ +void func(int p); + +/** A variadic template function overload + */ +template <typename... Args> +void func(int p, Args&... args); + +/** A variadic template function overload + */ +template <typename... Args> +void func(int p, Args&&... args); + +/** A variadic template function overload + */ +template <typename... Args> +void func(int p, const Args&... args); + +/** A variadic template function overload + */ +template <typename... Args> +void func(int p, const Args&&... args); + +/** A variadic template function overload + */ +template <typename... Args> +void func(int p, Args*... args); + +/** A variadic template function overload + */ +template <typename... Args> +void func(int p, Args**... args); + +/** A variadic template function overload + */ +template <typename... Args> +void func(int p, const Args*... args); + +/** A variadic template function overload + */ +template <typename... Args> +void func(int p, const Args**... args); + +/** A variadic template function overload + */ +template <typename... Args> +void func(int p, Args... args); + +/** A test */ +class Test +{ + public: + /** A variadic template method + */ + template <typename... Args> + void func(int p, Args... args) const; +}; |