c 11模板 獲取函式的引數型別

2021-09-11 06:33:55 字數 684 閱讀 3590

假設我們已經知道乙個函式型別的定義double(unsigned char*, unsigned char*),如何獲取這個函式定義中的輸入和輸出引數型別呢?

c++11提供的模板函式std::functionstd::tuple_element可以將乙個函式定義的輸入和輸出引數型別乙個乙個解析出來,下面是實現**

#include

#include

#include

#include

"fsfacesdk.h"

template

<

typename t>

struct function_traits;

// r為返回型別

// ...args 為輸入引數型別,個數不限

template

<

typename r,

typename..

.args>

struct function_traitsr(args...

)>>;}

;inline

double

compare

(const face_code &f1,

const face_code&f2)

參考資料

C 11 模板函式的預設模板引數

一 深入理解c 11 裡的兩句話 c 98中,引入了函式模板和類模板,允許模板類宣告的時候有預設模板引數,但是不支援函式模板。c 11 開始支援,區別是模板函式的預設模板引數不需要 從右往左 依次指定。特別,模板引數的預設形參不是模板引數推導的依據。二 include 模板類的預設模板引數的順序從右...

C 11 函式模板的預設模板引數

類模板 通用的類描述 使用泛型來定義類 進行例項化時,其中的泛型再用具體的型別替換。函式模板 通用的函式描述 使用泛型來定義函式 進行例項化時,其中的泛型再用具體的型別替換。c 98標準中兩者的區別 函式模板和類模板在c 98標準中一起被引入,兩者區別主要在於 在類模板宣告時,標準允許其有預設模板引...

C 11可變引數函式模板

在log時引數是型別和個數是不固定的,所以在做log函式時,很多煩惱,不過c 11給我們帶來的希望 include include using namespace std class logger static void makeloggeroff static bool loggerstate t...