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 721618 - Move contructors and move assignment operators of embedded classes of template classes cannot be matched.
Move contructors and move assignment operators of embedded classes of templat...
Status: VERIFIED FIXED
Product: doxygen
Classification: Other
Component: build
1.8.6
Other Windows
: Normal normal
: ---
Assigned To: Dimitri van Heesch
Dimitri van Heesch
Depends on:
Blocks:
 
 
Reported: 2014-01-06 10:10 UTC by Henning Ströker
Modified: 2014-04-28 07:22 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Henning Ströker 2014-01-06 10:10:53 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)
Comment 1 Dimitri van Heesch 2014-01-08 12:40:52 UTC
Confirmed. Should be fixed in the next GIT update.
Comment 2 Dimitri van Heesch 2014-04-21 10:09:23 UTC
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).
Comment 3 Henning Ströker 2014-04-28 07:22:10 UTC
Checked with 1.8.7, the bug is fixed.