#include <iostream>
struct Outer
{
template<typename T>
struct Inner
{
T value ;
void print(std::ostream& os) { os << value ; }
};
template <typename T>
Outer(T a) { Inner<T> i{a} ; i.print(std::cout); }
};
template<>
struct Outer::Inner<double>
{
double value ;
void print(std::ostream& os) { os << 6.66 ; }
} ;
int main()
{
Outer o1(10) ;
std::cout << '\n' ;
Outer o2(0.0) ;
std::cout << '\n' ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IE91dGVyCnsKCXRlbXBsYXRlPHR5cGVuYW1lIFQ+CglzdHJ1Y3QgSW5uZXIKCXsKCQlUIHZhbHVlIDsKCQl2b2lkIHByaW50KHN0ZDo6b3N0cmVhbSYgb3MpIHsgb3MgPDwgdmFsdWUgOyB9Cgl9OwoJCgl0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KCU91dGVyKFQgYSkgeyBJbm5lcjxUPiBpe2F9IDsgaS5wcmludChzdGQ6OmNvdXQpOyB9ICAKfTsKCnRlbXBsYXRlPD4Kc3RydWN0IE91dGVyOjpJbm5lcjxkb3VibGU+IAp7Cglkb3VibGUgdmFsdWUgOwoJdm9pZCBwcmludChzdGQ6Om9zdHJlYW0mIG9zKSB7IG9zIDw8IDYuNjYgOyB9Cn0gOwoKaW50IG1haW4oKQp7CglPdXRlciBvMSgxMCkgOwoJc3RkOjpjb3V0IDw8ICdcbicgOwoJT3V0ZXIgbzIoMC4wKSA7CglzdGQ6OmNvdXQgPDwgJ1xuJyA7Cn0=