#include <iostream>
template < class T>
class BASE
{
protected :
T DATA;
public :
BASE( )
{
DATA = 10 ;
}
~BASE( ) { }
} ;
template < class T>
class A : public virtual BASE< T>
{
public :
A( ) { }
~A( ) { }
} ;
template < class T>
class B : public virtual BASE< T>
{
public :
B( ) { }
~B( ) { }
} ;
template < class T>
class C: public A< T> , public B< T>
{
public :
C( ) { }
~C( ) { }
T getDATA( )
{
return DATA;
}
} ;
int main( )
{
C< int > c;
std:: cout << c.getDATA ( ) << std:: endl ;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGUgPGNsYXNzIFQ+CmNsYXNzIEJBU0UKewogICAgcHJvdGVjdGVkOgoKICAgICAgICBUIERBVEE7CgogICAgcHVibGljOgoKICAgICAgICBCQVNFKCkKICAgICAgICB7CiAgICAgICAgICAgIERBVEEgPSAxMDsKICAgICAgICB9CiAgICAgICAgfkJBU0UoKXt9Cgp9Owp0ZW1wbGF0ZSA8Y2xhc3MgVD4KY2xhc3MgQSA6IHB1YmxpYyB2aXJ0dWFsIEJBU0U8VD4KewogICAgcHVibGljOgoKICAgICAgICBBKCl7fQogICAgICAgIH5BKCl7fQoKfTsKdGVtcGxhdGUgPGNsYXNzIFQ+CmNsYXNzIEIgOiBwdWJsaWMgdmlydHVhbCBCQVNFPFQ+CnsKICAgIHB1YmxpYzoKCiAgICAgICAgQigpe30KICAgICAgICB+Qigpe30KCn07CnRlbXBsYXRlIDxjbGFzcyBUPgpjbGFzcyBDOiBwdWJsaWMgQTxUPiwgcHVibGljIEI8VD4KewoKICAgIHB1YmxpYzoKCiAgICAgICAgQygpe30KICAgICAgICB+Qygpe30KICAgICAgICBUIGdldERBVEEoKQogICAgICAgIHsKICAgICAgICAgICAgICAgIHJldHVybiBEQVRBOwogICAgICAgIH0KfTsKaW50IG1haW4oKQp7CiAgICBDPGludD4gYzsKICAgIHN0ZDo6Y291dDw8Yy5nZXREQVRBKCk8PHN0ZDo6ZW5kbDsKCiAgICByZXR1cm4gMDsKfQo=