问题标签 [parameter-pack]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
63 浏览

c++ - 在 std::tuple 上“迭代”并可以访问所有构造函数

我是可变参数模板的新手,我很难实现这个容器类。我想要的是获取一个类型列表,然后创建一个std::tuple包含std::vectors每种类型的列表。我遇到的具体困难是对此进行“迭代” std::tuple

我正在阅读这个答案,它提到你可以使用std::apply它。我不确定我是否理解“折叠表达式”的目的。这是我尝试过的:

如果我删除apply构造函数中的调用,它就会编译。我认为问题是Types()...。我是否可以以一般方式访问每个构造函数?

如果我只是回到运行时多态性并持有一堆指向所有这些基类的指针会更容易Types吗?

0 投票
0 回答
83 浏览

c++ - 参数包的反向累积乘积

在 c++17 中,我们可以很容易地得到参数包的累积乘积,如下所示:

有没有一种同样优雅的方法来获得逆序参数的乘积 -> [4, 12, 24, 24]?

注意:在最初的问题中,我的预期结果错误 (24,6,2,1) + 问题的措辞不准确。所以反转输出数组在这里不是一个选项。

当然,给定输入参数的相同顺序。

我已经尝试过使用折叠表达式,但它会迅速增加代码大小,因为我无法直接在 return 语句中找到这样做的方法。

0 投票
3 回答
234 浏览

c++ - 参数包中的过滤器类型

我正在尝试创建可变参数模板/参数包的过滤类型并保留排序。

在此示例中,过滤将过滤所有整数类型,例如。

我怎样才能创建一个这样的工具或能达到相同结果的东西

0 投票
2 回答
44 浏览

c++ - C ++ - 声明指向返回任何类型并获取任意数量参数的函数的指针

我想知道是否可以编写类似于此声明的任何内容(使用参数包)。

如果可能的话,我还想知道声明这样一个指针的替代方法。

0 投票
1 回答
291 浏览

c++ - arduino 参数包在没有元组的情况下工作

我正在尝试做一个可以返回参数包的草图。我在这里找到了一个参考: tuple to parameter pack

我将它修改为更加通用,并且可以将任何类型的对象返回到 void 函数指针。

也就是说,现在我正在使用 arduino DUE 和这个板支持元组进行测试。但是arduino uno没有。

因此,基于这篇文章: 可变参数数据结构 我决定使用我自己的微元组数据结构,它将由 UNO 支持。该结构自行工作。

到目前为止的代码:

错误来自自动 callFunc(..),它代表:

0 投票
1 回答
55 浏览

c++ - 参数包构造函数在类模板中隐藏用户定义的转换

我正在为数学向量编写一个简单的类模板。我在模板中有一个使用参数包的构造函数模板,以便可以使用可变数量的参数构造向量:

我还添加了用户定义的转换以使用此模板在类之间进行转换:

但是,当我调用用户定义的转换时,我是这样写的:

使用 C 样式转换的行会导致以下错误:

当我单步执行代码时,我可以看到 C 样式转换直接进入参数包构造函数。为什么会这样,我做错了什么?如何防止参数包构造函数看似隐藏用户定义的转换?

0 投票
2 回答
77 浏览

c++ - 初始化多个未知基类

如果库不知道基类(客户端知道),那么处理它的构造函数并不难。代码如下所示:

如果所有> 1个基类都是未知的,那么最好的方法是什么?

我的第一个想法是:

  • 参数包“拆分”类型。
  • 2 个转换为参数包的元组。

对于这两种想法,我不知道这次如何,以及是否可能。

0 投票
3 回答
280 浏览

c++ - c++:在构造函数中使用参数包?

上面的代码编译并运行良好。但:

无法使用消息编译:

main.cpp:在函数'int main()'中:main.cpp:64:18:错误:没有匹配函数调用'F :: F(int,bool,int)'F(4,true,1) ;

0 投票
1 回答
195 浏览

c++ - 模板元编程:如何将参数包组合到新的参数包

我正在尝试实现一种从元组中删除某些类型的方法;例如,我希望能够根据条件仅将前 2 个模板参数中的一个元组用于元组:

  1. 是否可以将元组包含的类型“打包”回参数包中?(元组 -> 类型名...包含类型)
  2. 是否可以组合一个参数。带有类型名的包(例如,使用“Pack1...,Pack2...”为结构指定单个参数包?

编辑行 Helper 失败并显示以下消息:

当我提供 typename

编辑2 我通过[辅助函数](https://gist.github.com/juliusHuelsmann/669f537aeb5e7105386d510d186b24e1 )实现了这一点,但是当构造函数不是 constexpr 时,那些非原始类型会失败,所以我不能在我的用例中使用它并且很好奇知道如何实现这一目标以及我的方法失败的原因。

0 投票
1 回答
90 浏览

c++ - 为什么使用 typedef 时类推导指南会失败?

在我目前编写的一段代码中,我使用了类推导指南。您可以在下面找到精简为一个简单(但无意义的示例)的代码摘录:我有一个 class User,它从构造函数的第一个参数派生其第一个模板参数,第二个来自参数包的大小作为第二个参数提供:

这工作正常(编译)。但是,当我通过将参数包的类型替换为依赖于模板参数的类型来进行微小修改switcher时,推导失败:

这是为什么?

代码的两种变体都可以在这里找到。