// Example program
#include <iostream>
#include <string>
#include <type_traits>
#include <complex>
typedef std::complex<double> my_type;
template<typename T = my_type>
typename std::enable_if<std::is_same<T,double>::value, void>::type
cnt()
{
std::cout<< "Called for double"<<std::endl;
}
template<typename T = my_type>
typename std::enable_if<std::is_same<T,std::complex<double>>::value, bool>::type
cnt()
{
std::cout<< "Called for complex<double>"<<std::endl;
return false;
}
int main()
{
//cnt();
bool b = cnt();
}
Ly8gRXhhbXBsZSBwcm9ncmFtCiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgojaW5jbHVkZSA8Y29tcGxleD4KCnR5cGVkZWYgc3RkOjpjb21wbGV4PGRvdWJsZT4gbXlfdHlwZTsKCnRlbXBsYXRlPHR5cGVuYW1lIFQgPSBteV90eXBlPgp0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VCxkb3VibGU+Ojp2YWx1ZSwgdm9pZD46OnR5cGUgCmNudCgpIAp7CiAgICBzdGQ6OmNvdXQ8PCAiQ2FsbGVkIGZvciBkb3VibGUiPDxzdGQ6OmVuZGw7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQgPSBteV90eXBlPgp0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VCxzdGQ6OmNvbXBsZXg8ZG91YmxlPj46OnZhbHVlLCBib29sPjo6dHlwZSAKY250KCkgCnsKICAgIHN0ZDo6Y291dDw8ICJDYWxsZWQgZm9yIGNvbXBsZXg8ZG91YmxlPiI8PHN0ZDo6ZW5kbDsKICAgIHJldHVybiBmYWxzZTsKfQoKaW50IG1haW4oKQp7CiAgCiAgLy9jbnQoKTsKICBib29sIGIgPSBjbnQoKTsKCn0K