template < typename T > struct integral_c { | |
static const T value = 0; | |
}; | |
struct is_reference:integral_c < bool > { }; | |
template < class > struct is_function_ptr_helper { }; | |
template < bool > struct is_function_chooser; | |
template <> struct is_function_chooser <0 > | |
{ | |
template < typename T > struct result_:is_function_ptr_helper < T * > { }; | |
}; | |
template < typename T > struct is_function_impl:is_function_chooser < | |
is_reference::value >::result_ < T > { }; |