With the 1.8.6 version one gets the mentioned messages. With the 1.8.10 version (all Windows, but this should not make any difference) the messages are gone. So if would be nice when the package maintainers supplied the newer version of doxygen
Albert On Mon, Aug 17, 2015 at 3:09 PM, Donjan Rodic <bryo...@freenet.de> wrote: > 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 > Doxygen-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/doxygen-users >
------------------------------------------------------------------------------
_______________________________________________ Doxygen-users mailing list Doxygen-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/doxygen-users