I'm using Doxygen 1.8.6 (default repository version of the current
Ubuntu LTS release) and encounter two issues while trying to move
documentation to structural commands (mainly \fn for member functions).
The first problem occurs when a class method with different signatures
is declared const:
/**
* \file test.hpp
*/
/**
* \fn template <T, U> void Foo::bar(T a, U b) const
* \brief two args
*
* \fn template <T> void Foo::bar(T a) const
* \brief one arg
*/
/**
* \brief Foobar
*/
class Foo {
public:
template <typename T, typename U> void bar(T a, U b) const {}
template <typename T> void bar(T a) const {}
};
which fails to document with two warnings, one of which is (abbreviated):
no matching class member found for
template< T > void Foo::bar(T a) const
Possible candidates:
'template < T >
void Foo::bar(T a) const
Removing the four occurences of const in the source file "fixes" the
warning, as does removing one of the signatures, neither of which I can
do. Using \overload in any combination doesn't help, same with switching
"T" for "typename T" and similar in pretty much any combination. Not
sure what the apostrophe in the warning is about.
The other example is about mixing overloading and default parameters:
/**
* \file test.hpp
*/
/**
* \fn template <T, U> void Foo::bar(T a, U b, int c=1)
* \brief three args
*
* \fn template <T> void Foo::bar(T a)
* \brief one arg
*/
/**
* \brief Foobar
*/
class Foo {
public:
template <typename T, typename U> void bar(T a, U b, int c=1) {}
template <typename T> void bar(T a) {}
};
which fails to document with one warning (again abbreviated to the most
confusing part):
no matching class member found for
template< T, U > void Foo::bar(T a, U b, int c=1)
Possible candidates:
'template < T, U >
void Foo::bar(T a, U b, int c=1)
The one-argument member function gets documented, the three-argument one
doesn't.
Removing the default parameter for the third argument "fixes" the
problem again, and interestingly so does removing the one-argument
member function (then in the resulting HTML, both \fn commands are
attached to the three-argument version). Also no success fiddling with
\overload and template keywords here.
So... any way to make this work properly, or should I go bother the
package maintainers to start building with clang parsing support?
cheers
Donjan Rodic
------------------------------------------------------------------------------
_______________________________________________
Doxygen-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/doxygen-users