GNOME Bugzilla – Bug 721618
Move contructors and move assignment operators of embedded classes of template classes cannot be matched.
Last modified: 2014-04-28 07:22:10 UTC
Move contructors and move assignment operators of embedded classes of template classes cannot be matched. This code shows the problem: ///Class to demonstrate the bug. template <class B> class A { public: ///Internal class class C { public: C(const C& r); C(C&& r); C& operator=(const C& r); C& operator=(C&& r); }; }; ///copy constructor template <class B> A<B>::C::C(const C& r) {} ///move constructor template <class B> A<B>::C::C(C&& r) {} ///assignment operator template <class B> typename A<B>::C& A<B>::C::operator=(const C& r) { return (*this); } ///move assignment operator template <class B> typename A<B>::C& A<B>::C::operator=(C&& r) { return (*this); } Doxygen will show warnings like this: movecontruction.cpp:19: warning: no matching class member found for template < B > A< B >::C::C(const A::C &r) Possible candidates: A< B >::C::C(const C &r) A< B >::C::C(C &&r)
Confirmed. Should be fixed in the next GIT update.
This bug was previously marked ASSIGNED, which means it should be fixed in doxygen version 1.8.7. Please verify if this is indeed the case. Reopen the bug if you think it is not fixed and please include any additional information that you think can be relevant (preferrably in the form of a self-contained example).
Checked with 1.8.7, the bug is fixed.