This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c++/53613] New: Cannot override a inline "= default" virtual destructor.


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53613

             Bug #: 53613
           Summary: Cannot override a inline "= default" virtual
                    destructor.
    Classification: Unclassified
           Product: gcc
           Version: 4.7.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: kirbyzhou@sogou-inc.com


[root@djt-17-109-v06 tmp]# cat tover.cpp 
struct __cook {
        virtual ~__cook() = default;
};

struct __cook1: public __cook {
        virtual ~__cook1() = default;
};

struct __cook2: public __cook {
        virtual ~__cook2();
};
__cook2::~__cook2() {};

struct __cook3: public __cook {
        virtual ~__cook3();
};
__cook3::~__cook3() = default;

[root@djt-17-109-v06 tmp]# g++47 -c -std=gnu++11 tover.cpp 
tover.cpp:6:10: error: looser throw specifier for 'virtual __cook1::~__cook1()'
tover.cpp:2:10: error:   overriding 'virtual __cook::~__cook() noexcept (true)'
tover.cpp:10:10: error: looser throw specifier for 'virtual
__cook2::~__cook2()'
tover.cpp:2:10: error:   overriding 'virtual __cook::~__cook() noexcept (true)'
tover.cpp:15:10: error: looser throw specifier for 'virtual
__cook3::~__cook3()'
tover.cpp:2:10: error:   overriding 'virtual __cook::~__cook() noexcept (true)
'
[root@djt-17-109-v06 tmp]# g++ -c -std=gnu++0x tover.cpp 
# g++ 4.4.6 works

Workaround: define parent destructor outside the class definition.

[root@djt-17-109-v06 tmp]# cat tover.cpp 
struct __cook {
                virtual ~__cook();
};
__cook::~__cook() = default;
/*...*/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]