[心得] 編譯時確定函數有無宣告
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成員
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.236.68.9
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1508811595.A.088.html
※ 編輯: loveflames (36.236.68.9), 10/24/2017 10:38:19
→
10/24 20:58,
8年前
, 1F
10/24 20:58, 1F
→
10/24 21:00,
8年前
, 2F
10/24 21:00, 2F
→
10/24 21:01,
8年前
, 3F
10/24 21:01, 3F
→
10/24 21:01,
8年前
, 4F
10/24 21:01, 4F
→
10/24 21:02,
8年前
, 5F
10/24 21:02, 5F
→
10/24 21:02,
8年前
, 6F
10/24 21:02, 6F
→
10/24 21:20,
8年前
, 7F
10/24 21:20, 7F
→
10/24 21:20,
8年前
, 8F
10/24 21:20, 8F
→
10/24 21:21,
8年前
, 9F
10/24 21:21, 9F
→
10/24 21:21,
8年前
, 10F
10/24 21:21, 10F
→
10/24 21:51,
8年前
, 11F
10/24 21:51, 11F
推
10/24 21:56,
8年前
, 12F
10/24 21:56, 12F
→
10/24 21:56,
8年前
, 13F
10/24 21:56, 13F
→
10/24 21:57,
8年前
, 14F
10/24 21:57, 14F
→
10/25 10:07,
8年前
, 15F
10/25 10:07, 15F
→
10/25 10:07,
8年前
, 16F
10/25 10:07, 16F
→
10/25 10:08,
8年前
, 17F
10/25 10:08, 17F
→
10/25 10:09,
8年前
, 18F
10/25 10:09, 18F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章