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成員