#include <stdio.h>
class Madoka;
class Homura;
class Kyoko;
class Sayaka;
class Mami;
class Human{};
template<class T>
class MahouShoujo
{
template<class> friend class MahouShoujo; // 魔法少女はみんな友達
Human* m_pSoulGem;
public:
MahouShoujo() : m_pSoulGem(new Human){}
~MahouShoujo(){ delete m_pSoulGem; }
template<class U>
Human* ThrowSoulGem( MahouShoujo<U>& m )
{
Human* p = m.m_pSoulGem;
m.m_pSoulGem = 0;
return p;
}
};
int main( void )
{
MahouShoujo<Sayaka> sayaka;
MahouShoujo<Madoka> madoka;
madoka.ThrowSoulGem( sayaka );
printf( "(。。)今のはまずかった\n" );
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgpjbGFzcyBNYWRva2E7CmNsYXNzIEhvbXVyYTsKY2xhc3MgS3lva287CmNsYXNzIFNheWFrYTsKY2xhc3MgTWFtaTsKCmNsYXNzIEh1bWFue307Cgp0ZW1wbGF0ZTxjbGFzcyBUPgpjbGFzcyBNYWhvdVNob3Vqbwp7Cgl0ZW1wbGF0ZTxjbGFzcz4gZnJpZW5kIGNsYXNzIE1haG91U2hvdWpvOyAvLyDprZTms5XlsJHlpbPjga/jgb/jgpPjgarlj4vpgZQKCUh1bWFuKiBtX3BTb3VsR2VtOwpwdWJsaWM6CglNYWhvdVNob3VqbygpIDogbV9wU291bEdlbShuZXcgSHVtYW4pe30KCX5NYWhvdVNob3VqbygpeyBkZWxldGUgbV9wU291bEdlbTsgfQoJdGVtcGxhdGU8Y2xhc3MgVT4KCUh1bWFuKiBUaHJvd1NvdWxHZW0oIE1haG91U2hvdWpvPFU+JiBtICkKCXsKCQlIdW1hbiogcCA9IG0ubV9wU291bEdlbTsKCQltLm1fcFNvdWxHZW0gPSAwOwoJCXJldHVybiBwOwoJfQp9OwoKaW50IG1haW4oIHZvaWQgKQp7CglNYWhvdVNob3VqbzxTYXlha2E+IHNheWFrYTsKCU1haG91U2hvdWpvPE1hZG9rYT4gbWFkb2thOwoJbWFkb2thLlRocm93U291bEdlbSggc2F5YWthICk7CglwcmludGYoICIo44CC44CCKeS7iuOBruOBr+OBvuOBmuOBi+OBo+OBn1xuIiApOwogICAgcmV0dXJuIDA7Cn0=