考虑具有可变参数模板参数的模板化函数的情况:
template<typename Tret, typename... T> Tret func(const T&... t);
Run Code Online (Sandbox Code Playgroud)
现在,我有一个t价值元组.如何func()使用元组值作为参数调用?我已经阅读了bind()函数对象,call()函数,以及apply()不同的一些现在过时的文档中的函数.GNU GCC 4.4实现似乎call()在bind()类中有一个函数,但是关于这个主题的文档很少.
有些人建议使用手写的递归黑客,但可变参数模板参数的真正价值在于能够在上述情况下使用它们.
有没有人有解决方案,或提示在哪里阅读它?
如何迭代元组(使用C++ 11)?我尝试了以下方法:
for(int i=0; i<std::tuple_size<T...>::value; ++i)
std::get<i>(my_tuple).do_sth();
Run Code Online (Sandbox Code Playgroud)
但这不起作用:
错误1:抱歉,未实现:无法将"Listener ..."扩展为固定长度的参数列表.
错误2:我不能出现在常量表达式中.
那么,我如何正确迭代元组的元素?