[Bug c++/61655] New: Copy constructor not called on CRTP schema
fabien.picarougne@univ-nantes.fr
gcc-bugzilla@gcc.gnu.org
Mon Jun 30 07:38:00 GMT 2014
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61655
Bug ID: 61655
Summary: Copy constructor not called on CRTP schema
Product: gcc
Version: 4.9.0
Status: UNCONFIRMED
Severity: critical
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: fabien.picarougne@univ-nantes.fr
Created attachment 33033
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=33033&action=edit
Illustration of the problem
When using a CRTP pattern on a class and returning an object of this class in a
function, the copy constructor is not called.
See test attached file that illustrate the problem. Output on gcc 4.9.0 is
CBase::CBase()
CDerived::CDerived()
CBase::CBase()
CDerived::CDerived()
before test:
operator*
CBase::CBase()
CDerived::CDerived()
end operator*
CBase::Display()
after test:
CDerived::~CDerived()
CBase::~CBase()
CDerived::~CDerived()
CBase::~CBase()
CDerived::~CDerived()
CBase::~CBase()
but the expected outpup is
CBase::CBase()
CDerived::CDerived()
CBase::CBase()
CDerived::CDerived()
before test:
operator*
CBase::CBase()
CDerived::CDerived()
end operator*
CBase::CBase(const CBase &obj)
CDerived::CDerived(const CDerived &obj)
CDerived::~CDerived()
CBase::~CBase()
CBase::Display()
after test:
CDerived::~CDerived()
CBase::~CBase()
CDerived::~CDerived()
CBase::~CBase()
CDerived::~CDerived()
CBase::~CBase()
This code works fine on MSVC2013 C++ compiler
More information about the Gcc-bugs
mailing list