【发布时间】:2014-06-20 15:03:59
【问题描述】:
我有一个可变参数函数,例如:
void test(int){}
template<typename T,typename...Args>
void test(int& sum,T v,Args... args)
{
sum+=v;
test(sum,args...);
}
我想给它起别名:
auto sum = test;//error : can not deduce auto from test
int main()
{
int res=0;
test(res,4,7);
std::cout<<res;
}
我尝试使用std::bind,但它不适用于可变参数函数,因为它需要占位符...
是否可以给变量函数起别名?
【问题讨论】:
-
auto sum = [](auto&&... pp) { return test(std::forward<decltype(pp)>(pp)...); };或类似的东西。不过,这不是真正的别名。例如,您不能使用auto x = &sum<int, double>;。
标签: c++ templates c++11 variadic-templates c++14