#include <iostream>
#include <complex>
template<class T>
class cc {
template <typename TT>
void print(const TT&v) { std::cout << v << std::endl ;}
template <typename TT>
void print(const std::complex<TT>& c) { std::cout << "complex " << c << std::endl; }
public:
void foo() { print(v); }
T v ;
};
int main()
{
cc< std::complex<double> > r ;
cc<double> r2 ;
r.foo() ;
r2.foo() ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y29tcGxleD4KCnRlbXBsYXRlPGNsYXNzIFQ+CmNsYXNzIGNjIHsKICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUVD4KICAgIHZvaWQgcHJpbnQoY29uc3QgVFQmdikgeyBzdGQ6OmNvdXQgPDwgdiA8PCBzdGQ6OmVuZGwgO30KCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVFQ+CiAgICB2b2lkIHByaW50KGNvbnN0IHN0ZDo6Y29tcGxleDxUVD4mIGMpIHsgc3RkOjpjb3V0IDw8ICJjb21wbGV4ICIgPDwgYyA8PCBzdGQ6OmVuZGw7IH0KCnB1YmxpYzoKICAgIHZvaWQgZm9vKCkgeyBwcmludCh2KTsgfQoKICAgIFQgdiA7Cn07CgppbnQgbWFpbigpCnsKICBjYzwgc3RkOjpjb21wbGV4PGRvdWJsZT4gPiByIDsKICBjYzxkb3VibGU+IHIyIDsKCiAgci5mb28oKSA7CiAgcjIuZm9vKCkgOwp9