version: g++0x (GCC) 4.3.0 20070628 (experimental) (more exactly: branch svn://gcc.gnu.org/svn/gcc/branches/cxx0x-branch, svn revision 126129) system type: x86_64-unknown-linux-gnu configured with: ../gcc0x/configure --program-suffix=0x --disable-multilib --enable-languages=c,c++
The following code prints two different adresses for m_Count, whereas it should print the same address twice. It works properly when not calling the delegate constructor from A's default constructor. It also works properly if the "blah" array in B is removed or reduced to a size of one. ==================================== #include <iostream> class base { public: virtual ~base() {} int m_Count; }; class A : public virtual base { public: A( int blah ) {} A() : A( 13245 ) { std::cout << &m_Count << std::endl; } }; class B : public virtual base, public A { public: B() { std::cout << &m_Count << std::endl; } private: int blah[100]; }; int main() { B* pB = new B; return 0; } ================================= -- Summary: [cxx0x branch] incorrect member address when using delegate constructors and virtual inheritance Product: gcc Version: 4.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: a dot chavasse at gmail dot com GCC build triplet: x86_64-unknown-linux-gnu GCC host triplet: x86_64-unknown-linux-gnu GCC target triplet: x86_64-unknown-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32676