Cris Luengo - 2017-02-08

I'm sorry if this is not the right place to report bugs. Please let me know how/where to file the bug.

I have ran into a bug in Doxygen, where it is not correctly parsing overloaded function names, where the input type is a templated class and the template parameter is a user-defined type alias (see example below). What happens is that Doxygen sees all overloaded functions identical. When I leave the user-defined type alias out, and use build-in types as the template parameter, then Doxygen distinguishes all functions. In the example below, out of the first 3 overloads of the function, only the first one is documented, but with the documentation string for all 3. The other three overloads are documented.


// file.h

/// \brief A namespace
namespace xxx {

template< typename T >
class Array {};

using sint = int;
using uint = unsigned;
using dfloat = double;
using IntegerArray = Array< xxx::sint >;
using UnsignedArray = Array< xxx::uint >;
using FloatArray = Array< xxx::dfloat >;

using IntegerArray2 = Array< int >;
using UnsignedArray2 = Array< unsigned >;
using FloatArray2 = Array< double >;

/// \brief A function -- documented, it's different from all other functions
inline out* function( UnsignedArray const& in ) {}

/// \brief A function -- no documentation generated, Doxygen thinks it's identical to the one above
inline out* function( IntegerArray const& in ) {}

/// \brief A function -- no documentation generated, Doxygen thinks it's identical to the one above
inline out* function( FloatArray const& in ) {}

/// \brief A function -- documented, it's different from all other functions
inline out* function( UnsignedArray2 const& in ) {}

/// \brief A function -- documented, it's different from all other functions
inline out* function( IntegerArray2 const& in ) {}

/// \brief A function -- documented, it's different from all other functions
inline out* function( FloatArray2 const& in ) {}

}

Doxyfile:

OUTPUT_DIRECTORY = out
EXTRACT_STATIC = YES
EXTRACT_ANON_NSPACES = YES
INPUT = .
FILE_PATTERNS = *.h