199451b44SJordan Rupprecht static int g_next_value = 12345; 299451b44SJordan Rupprecht 3*78e17e23SRaphael Isemann struct VBase { VBaseVBase499451b44SJordan Rupprecht VBase() : m_value(g_next_value++) {} ~VBaseVBase599451b44SJordan Rupprecht virtual ~VBase() {} 699451b44SJordan Rupprecht int m_value; 799451b44SJordan Rupprecht }; 899451b44SJordan Rupprecht 9*78e17e23SRaphael Isemann struct Derived1 : public virtual VBase { 1099451b44SJordan Rupprecht }; 1199451b44SJordan Rupprecht 12*78e17e23SRaphael Isemann struct Derived2 : public virtual VBase { 1399451b44SJordan Rupprecht }; 1499451b44SJordan Rupprecht 15*78e17e23SRaphael Isemann struct Joiner1 : public Derived1, public Derived2 { 16*78e17e23SRaphael Isemann long x = 1; 1799451b44SJordan Rupprecht }; 1899451b44SJordan Rupprecht 19*78e17e23SRaphael Isemann struct Joiner2 : public Derived2 { 20*78e17e23SRaphael Isemann long y = 2; 2199451b44SJordan Rupprecht }; 2299451b44SJordan Rupprecht main(int argc,const char * argv[])23*78e17e23SRaphael Isemannint main(int argc, const char *argv[]) { 2499451b44SJordan Rupprecht Joiner1 j1; 2599451b44SJordan Rupprecht Joiner2 j2; 2699451b44SJordan Rupprecht Derived2 *d = &j1; 2799451b44SJordan Rupprecht d = &j2; // breakpoint 1 2899451b44SJordan Rupprecht return 0; // breakpoint 2 2999451b44SJordan Rupprecht } 30