#define TEST(ITEMNAME) AddItem(ITEMNAME, #ITEMNAME);templatevoid AddItem(T& var, const std::string& name){ cout << var << endl; cout << name << endl;}template void foo_impl(T val, true_type){ cout << "one" << endl;}template void foo_impl(T val, false_type){ cout << "two" << endl;}template void foo(T val){ foo_impl(val, std::is_integral ());}int main(int argc, char *argv[]){ int a = 100; TEST(a); foo(100.01); getchar(); return 0;}