After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 589616 - typedef inside a template class will confuse doxygen when resolving methods
typedef inside a template class will confuse doxygen when resolving methods
Status: RESOLVED FIXED
Product: doxygen
Classification: Other
Component: general
1.5.9
Other Windows
: Normal normal
: ---
Assigned To: Dimitri van Heesch
Dimitri van Heesch
Depends on:
Blocks:
 
 
Reported: 2009-07-24 14:45 UTC by Carl R. Werth
Modified: 2009-08-20 10:13 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
example to reproduce the bug (18.32 KB, application/x-zip-compressed)
2009-07-24 14:51 UTC, Carl R. Werth
Details

Description Carl R. Werth 2009-07-24 14:45:52 UTC
If inside a template class a typedef is defined and used as parameter to a method, then doxygen will be not recognize this method.
Documentation attached to this method will not show up in the HTML output.
Example:

template<class T>
class A
{
public:
    typedef int* INT_PTR;  ///< typedef inside class A, but public

    void Set_Ptr(INT_PTR p);

    INT_PTR m_p;
};

template<class T>
void A<T>::Set_Ptr(typename A<T>::INT_PTR p)
{
    m_p = p;
}


Warnings produced by doxygen:
Error.cpp:14: Warning: no matching class member found for
  template < T >
  void A< T >::Set_Ptr(A< T >::int *p)
Possible candidates:
  void A< T >::Set_Ptr(INT_PTR p)
  void A< T >::Set_Ptr(INT_PTR p)    <-- same warning twice !??
Comment 1 Carl R. Werth 2009-07-24 14:51:26 UTC
Created attachment 139159 [details]
example to reproduce the bug

Bug_589616_reproduce.zip includes:
- configuration file
- simple C/C++ source to reproduce the bug
Comment 2 Dimitri van Heesch 2009-07-25 15:14:25 UTC
Confirmed. Should be fixed in the next subversion update.

Main problem was that the scope of the parameter in

void A<T>::Set_Ptr(typename A<T>::INT_PTR p)

is actually redundant, the following works just as well (tested with gcc):

void A<T>::Set_Ptr(INT_PTR p)

Nevertheless, doxygen should of course recognize both versions.
Comment 3 Dimitri van Heesch 2009-08-20 10:13:00 UTC
This bug was previously marked ASSIGNED, which means it should be fixed in
doxygen version 1.6.0. Please verify if this is indeed the case and reopen the
bug if you think it is not fixed (include any additional information that you
think can be relevant).