Created attachment 28720 [details] code snippet Hello, I have some code that compile and work fine in gcc 4.6.2 (without tne new keyword "override" ) but in version 4.7.2 it complie generate access violation runtime. under windows platform. So, i need some help, thank you very much: #include <iostream> using namespace std; struct Entity { //~Entity() = default; //work fine ~Entity() {} //when i specified my destructor this compile but generate runtime access viloation }; template<typename T> struct IRepository { virtual T g() = 0; }; struct OtherInterface{ virtual void y() = 0; }; struct IEntityRepository : public virtual IRepository<Entity>{ }; template<typename T> struct RepositoryBase : public virtual IRepository<T>, public OtherInterface{ virtual void y() override { cout << "y() override called" << endl; } }; template<typename T> struct DataRepository : public RepositoryBase<T>{ virtual T f() { cout << "f() called" << endl; this->y(); T t; return t; } T g() override { cout << "g() override called" << endl; ////when i specified my destructor for class Entity this compile but generate runtime access viloation here : on this: probably problem with vptr return this->f(); } }; struct EffectiveEntityRepository : public DataRepository<Entity>, public IEntityRepository{ }; int main() { IEntityRepository* var = new EffectiveEntityRepository(); var->g(); return 1; }
Does it happen only on Windows? Which kind of system exactly, mingw, Cygwin? In case should be <target>, as Component
I just tried that with the latest version (4.7.2) of MingW under windows 8
looks like PR55171
Indeed it does, but we badly need a mingw maintainer to resolve this (or these) issues
I'm a candidate:)
*** Bug 55453 has been marked as a duplicate of this bug. ***
Dup. *** This bug has been marked as a duplicate of bug 55171 ***
(In reply to comment #8) > Dup. > > *** This bug has been marked as a duplicate of bug 55171 *** Hmm, indeed a dup. It seems to be related to the thunk-code for thiscall. I will take a look to it.