假設我們已經知道乙個函式型別的定義double(unsigned char*, unsigned char*)
,如何獲取這個函式定義中的輸入和輸出引數型別呢?
c++11提供的模板函式std::function
和std::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...