| 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 > { }; |