#include #include void f( int ) { std::cout << "int, "; } template< typename T > auto f( T ) -> typename std::enable_if< !std::is_same< T, long >::value >::type { std::cout << "T, "; } int main() { int a; bool b; long c; f( a ), f( b ), f( c ); }