class nothing;
nothing f(nothing);//避免f没宣告时编译错误
template<typename Type,Type Ptr>
class helper;
//存在f,且型态与Type相符时才展开这个,Type即用来确认的函数指标型别
template<typename Type>
char check_f(helper<Type,&f> *);
//失败时展开这个
template<typename Type>
int check_f(...);
template<typename Type>
struct has_fun_f{
enum {value=sizeof(check_f<Type>(0))==sizeof(char)};
};
范例: has_fun_f<int (*)()>::value
配合macro,可把f替换为任一想确认的函数名称
code稍微改一下可用来确认class成员