是否有在C++中的任何方式14分之11寫可變參數模板函數是這樣的:模板函數結合元組的元素的可變參數數到另一個函數作爲參數
template <typename ReturnType, typename Args...>
std::function<ReturnType()> bindArgumentsFromTuple
(std::function<ReturnType(Args... args)> f,
const std::tuple<Args...>& t)
結合的元組噸元件起作用f作爲參數(例如,元素的數量及其類型在函數參數和元組中是相同的)?用法
例子:
void dummy_print(int i, double d)
{
std::cout << i << "," << d << '\n';
}
void dummy_print2(int i, double d, std::string& s)
{
std::cout << i << "," << d << "," << s << '\n';
}
int main() {
std::tuple<int,double> t(77,1.1);
std::tuple<int,double,std::string> t2(1,2.0,"aaa");
auto f1 = bindArgumentsFromTuple(dummy_print, t);
f1();
auto f2 = bindArgumentsFromTuple(dummy_print2, t2);
f2();
return 0;
}
謝謝!這是我在C++中的另一個知識缺口:'std :: index_sequence' :) – attuda
在第一次重載時,你不會多次轉發't'(可能移動它)嗎? – 0x499602D2
@ 0x499602D2我正在轉發它,所以'std :: get'可以相應地轉發元組的元素,儘可能避免複製 – Columbo