C 筆記 (可變參模版引數包展開)

2021-10-06 18:26:58 字數 1375 閱讀 7250

/

摺疊表示式

左折:引數從左側開始計算

右折:引數從右側開始計算

template auto add_val(t...arg)

template auto sub_val_left(t...arg) //sub_val_left(10, 20, 30) -40 :((10-20)-30)

template auto sub_val_right(t...arg)

return (arg - ...);

} template auto sub_val_left_b(t...arg)//二元左折 sub_val_left_b(10, 20, 30) :((220-10)-20)-30

template auto sub_val_right_b(t...arg) //sub_val_right_b(10, 20, 30) :(10-(20-(30-220)))

template void pf(t const & ...args)

類以繼承的方式

template//泛化

class test

template<>

class test<>

}template//偏特化

class test:private test

arg _i;

}void pf()

template>typename...container>

class test_mm

};template>typename var,

template>typename...container>

class test_mm:private test_mm

var_con;

}; template>typename...container>

class test_mm_child :private test_mm /

組合//組合方式展開位址不一樣, 繼承是一樣的

templateclass test

};template<>

class test<>

};templateclass test

test(first arg, args... _args) :_i(arg), _m_o(_args...)//, test(_args...)

first _i;

test_m_o;

}; void pf()

tuple

/templateclass test_c

};templateclass test_c

}; templatevoid test(const std::tuple& t)

void pf()

/

C 筆記 可變引數函式

在c 中有時需要使用引數數目未知的函式,如輸出日誌等場景。這時需要用到頭檔案 include需要用到以下型別和方法 va list typedef char va list 可變引數列表 va start ap,v 獲取可變引數列表的第乙個引數位址,ap是型別va list的指標,v是可變引數最左邊...

C 筆記之 函式可變引數

其實函式的引數的可變是因為不確定函式的引數大小的原因才使用的。看下面乙個列子 static void newpamars string i,params string values 這就是乙個簡單的可變引數的宣告。再這裡params是指定引數可變的關鍵字,應該注意的是可變引數必須是引數中的最後乙個,...

c 11之函式引數包展開

本文略帶總結性,參考 泛化之美 c 11可變模版引數的妙用 用下面的函式可以實現查詢引數包的個數 templateunsigned int length args.args 呼叫 length 1,hello c 11 返回4,4個引數3.1注意,遞迴展開需要考慮爆棧的情況。說到這裡,ubuntu ...