【发布时间】:2016-01-12 13:19:46
【问题描述】:
在 c++11/14 中有没有办法像这样编写可变参数模板函数:
template <typename ReturnType, typename Args...>
std::function<ReturnType()> bindArgumentsFromTuple
(std::function<ReturnType(Args... args)> f,
const std::tuple<Args...>& t)
将元组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++ c++11 tuples c++14 variadic-templates