C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – Boost绑定占位符参数等于Variadic Template参数的数量大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想知道在boost :: bind调用中是否可以使用传递给一个可变模板的参数作为占位符.

这样的事情

template <typename ... Args>

boost::bind(&function,this,anArg,_1));         //If Args count equals 1
boost::bind(&function,_1,_2));     //If Args count equals 2
boost::bind(&function,_2,_3)); //If Args count equals 3

这可能吗?

谢谢

解决方法

绝对有一种部分专业化的方式. 你的可变性不知道参数的数量吗?您必须使用编译时递归,在此期间,您可以使用boost :: mpl(或使用简单的积分常数增量计数)来堆栈参数. 那么在你最后一次非变数递归调用(使用0 arg)中,你可以在你的容器上@L_907_0@mpl :: size(或者如果你选择了这个方法,你可以使用整数计数器)来调用Callable类似于另一个答案,那就是所有的参数,加上类型列表开头的一个整体模板参数.那就是你的专长.您可以根据其专门的参数数量为每个数量的参数调用调用正确的绑定. (可调用结构根据参数整数模板参数的数量(部分)进行专门化,即使Call函数使用最大数量的参数,它只包含正确的boost :: bind调用,例如bind(..,_2)用于可呼叫< 2,T1,T2,T3>) 它不可怕,但我确认我以前在C 03中使用了这种方法.

大佬总结

以上是大佬教程为你收集整理的c – Boost绑定占位符参数等于Variadic Template参数的数量全部内容,希望文章能够帮你解决c – Boost绑定占位符参数等于Variadic Template参数的数量所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。