- #include <iostream> 
- #include <assert.h> 
-   
- using namespace std; 
-   
- struct A { 
-         A() { assert(false); } 
- 	A(int a) { cout << "A=" << a << endl; } 
- }; 
- struct B : virtual A { 
- 	B(int a)  {} 
- }; 
- struct C : virtual A { 
- 	C(int a) : A(a) {} 
- }; 
-   
- struct Hoge : B, C { 
- 	Hoge() : B(1), C(2),  A(3) {} 
- }; 
-   
- int main(int ac, char* av[]) { 
- 	Hoge hoge; 
- 	return 0; 
- } 
-   
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YXNzZXJ0Lmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IEEgewogICAgICAgIEEoKSB7IGFzc2VydChmYWxzZSk7IH0KCUEoaW50IGEpIHsgY291dCA8PCAiQT0iIDw8IGEgPDwgZW5kbDsgfQp9OwpzdHJ1Y3QgQiA6IHZpcnR1YWwgQSB7CglCKGludCBhKSAge30KfTsKc3RydWN0IEMgOiB2aXJ0dWFsIEEgewoJQyhpbnQgYSkgOiBBKGEpIHt9Cn07CgpzdHJ1Y3QgSG9nZSA6IEIsIEMgewoJSG9nZSgpIDogQigxKSwgQygyKSwgIEEoMykge30KfTsKCmludCBtYWluKGludCBhYywgY2hhciogYXZbXSkgewoJSG9nZSBob2dlOwoJcmV0dXJuIDA7Cn0K