#include <iostream>
#include <type_traits>
struct node
{
template < class T >
void analyze(T t, typename std::enable_if<std::is_integral<T>::value>::type* = 0)
{
std::cout << "is_arithmetic type " << t << "\n";
}
template < class T >
void analyze(T t, typename std::enable_if<std::is_floating_point<T>::value>::type* = 0)
{
std::cout << "is_floating_point type " << t << "\n";
}
void analyze(bool t)
{
std::cout << "is bool type " << t << "\n";
}
};
int main() {
node n;
n.analyze(13);
n.analyze(3.1415);
n.analyze(false);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZV90cmFpdHM+CgpzdHJ1Y3Qgbm9kZQp7CiAgdGVtcGxhdGUgPCBjbGFzcyBUID4KICB2b2lkIGFuYWx5emUoVCB0LCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZT46OnR5cGUqID0gMCkKICB7CiAgICBzdGQ6OmNvdXQgPDwgImlzX2FyaXRobWV0aWMgdHlwZSAiIDw8IHQgPDwgIlxuIjsKICB9CgogIHRlbXBsYXRlIDwgY2xhc3MgVCA+CiAgdm9pZCBhbmFseXplKFQgdCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19mbG9hdGluZ19wb2ludDxUPjo6dmFsdWU+Ojp0eXBlKiA9IDApCiAgewogICAgc3RkOjpjb3V0IDw8ICJpc19mbG9hdGluZ19wb2ludCB0eXBlICIgPDwgdCA8PCAiXG4iOwogIH0KCiAgdm9pZCBhbmFseXplKGJvb2wgdCkKICB7CiAgICBzdGQ6OmNvdXQgPDwgImlzIGJvb2wgdHlwZSAiIDw8IHQgPDwgIlxuIjsKICB9Cn07CgoKaW50IG1haW4oKSB7CgkKCW5vZGUgbjsKCW4uYW5hbHl6ZSgxMyk7CgluLmFuYWx5emUoMy4xNDE1KTsKCW4uYW5hbHl6ZShmYWxzZSk7CgoJcmV0dXJuIDA7Cn0=