GNOME Bugzilla – Bug 589616
typedef inside a template class will confuse doxygen when resolving methods
Last modified: 2009-08-20 10:13:00 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 !??
Created attachment 139159 [details] example to reproduce the bug Bug_589616_reproduce.zip includes: - configuration file - simple C/C++ source to reproduce the bug
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.
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).