variadic-templates相关内容

我们可以使用可变参数模板函数过滤特定类型的参数,然后将其余参数传递给另一个函数吗?

例如 //我们有一个可变参数函数无效打印(...);//我需要这样的函数来过滤特定类型的参数template无效print_filter(const Args& ... args){//过滤非整数类型打印(积分参数);}//我的目标是,所有非整数类型都可以忽略:print_filter(1.0,2,"abc",3)== print(2,3) 我已经用尽 ..
发布时间:2021-04-20 18:33:28 C/C++开发

过滤参数包的类型

我想知道是否可以过滤传递给可变参数模板的类型(基于谓词模板)以生成另一个可变参数模板,其中包含满足谓词的类型: /**过滤参数包*/模板班级,模板班级,类...>结构过滤器;模板class Pred,模板可变参数类>结构过滤器:Variadic{};模板 ..
发布时间:2021-04-20 18:32:53 C/C++开发

通过参数包扩展添加所有参数

考虑一下,我有一个带有 int ... 参数的可变参数模板.例如这样的函数: templateint add(){返回t ... + ???} 该方法应该做的就是添加所有参数.使用递归可变参数模板可以轻松实现.但是,是否还可以使用参数包扩展来表达这一点(或类似的表达方式,例如使用其他二进制运算符聚合所有模板参数)? 解决方案 是的,使用我从休息室的@Xeo中 ..
发布时间:2021-04-19 20:56:28 C/C++开发

在操作符重载中使用可变参数模板合法吗?

我希望能够按照以下方式写点东西: 结构栏{};模板bar运算符+(bar,Args ...){} 我刚刚用clang/gcc进行了检查,就像我一样,二元表达式( a + b )和一元表达式( + a )都选择了重载运算符会期望的.但是,运算符比普通函数受到更多的限制,例如,您不能用三个参数重载 operator +(). 用法是否合法且可移植? ..

在C ++ 17中解压缩可变参数元组

在c ++ 17(也许是C ++ 2a)中,有什么比用结构化绑定?有什么提示吗?我可以接受一个答案,为什么我不能在这里使用这些提到的C ++ 17功能-但我更喜欢“解决方案". 解决方案 自C ++ 14起,我们具有通用的lambda,而自C ++ 17起,我们具有有效的折叠表达式和 std :: apply 隐藏通常的拆包逻辑: std :: apply([](auto& ... i ..

功能中的参数打包后的参数

我能够找到关于一个问题似乎是在问与我相同或相似的问题,但没有答案:-( 我想在参数包之后放置一个非模板参数.我对可变参数模板/参数包的C ++标准规范不太熟悉,但是我的常识假设告诉我,传递给函数的最右边的参数将首先填充到放置参数中,然后将其余参数填充到参数包.但是,我无法在g ++或clang ++上使用我的测试代码.下面的示例代码. #include#include ..
发布时间:2021-04-19 19:01:44 C/C++开发

可变参数模板的统一初始化

我有一个POD ChParam ,它是可变参数模板函数 set 中的一个参数.我想在花括号 p.set({Param :: D,1000.f},{Param :: p,2000.f})中传递给函数形参(构造函数参数).并且认为构造函数将被隐式调用,并且将创建 ChParam 对象.但这是不可能的,我应该显式创建一个对象 a.set(ChParam {Param :: D,1000.f},ChPar ..
发布时间:2021-04-19 18:56:50 C/C++开发

可变参数模板的C ++异步找不到正确的功能模板专业化

我有一个带有成员函数 f 的类,我用可变参数模板和 forward 将其包装起来,以制作另一个成员函数 rf (只是在 f 的末尾添加一个特定的参数来做一些不同的事情).然后,我通过用 async 包装 rf 来制作另一个成员函数 async_rf ,但这是行不通的.我尝试通过用其他特定参数包装 f 来制作 async_rf ,并且它可以正常工作. 代码: #include ..
发布时间:2021-04-12 19:10:16 C/C++开发

参数包扩展在Lambda中不起作用

我通过做一些练习来学习可变参数模板,但是在lambda中扩展参数包时我陷入了困境 所以,我的想法是编写一个计时器类,其有效载荷将是可调用的,但是当我尝试在lambda函数中扩展参数包时,我遇到了编译错误. gcc版本4.8.4(Ubuntu 4.8.4-2ubuntu1〜14.04.3) template s ..
发布时间:2021-02-15 21:09:21 C/C++开发