问题标签 [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 回答
94 浏览

c++ - 参数包是否有设定限制?

参数包的元素数量是否有上限或最大数量,例如最大模板递归深度?

0 投票
2 回答
123 浏览

c++ - 如何在模板函数中根据对象的类型构造不同的对象?

这是我的问题,我有一个基类Base、两个派生类ClassA和仅采用两个参数的ClassB形式Base,以及两个类ClassB0ClassB1派生自ClassB三个参数。我想根据传递给函数的类型创建类实例create,如果类型派生自ClassB,第一个参数将填充 10。编译器总是警告没有匹配的构造函数。

0 投票
1 回答
64 浏览

c++ - 如何从参数包中获取指向对象的指针

我无法使用参数包获取 2 个相同类型的不同对象以指向不同对象的指针。这是Controller.h:

这是我的Test2.h:

我的问题是当我制作两个单独的 Controller 对象时,它们在各自的向量中共享它们的 Test2 对象。这是我的主要内容:

那么输出是:

我希望 Controller 的不同对象具有指向不同 Test2 对象的不同指针,而我 v3 不知道如何。

此外,作为一个附带问题;我的第一个指针总是变为 0,除非它是向量中唯一的对象。

任何帮助表示赞赏!

0 投票
0 回答
25 浏览

c++ - 如何在参数包中使用类型?

我是 c++11 的新手,并试图创建一个运行对象的函数

我不知道如何使用参数包中的类型,正确的语法是什么?

0 投票
1 回答
126 浏览

c++ - 从模板参数包将指向成员的指针传递给函数对象

Bellow 是示例代码,它演示了我正在尝试做的事情。

基本上,我想将多个指向成员的指针传递给类方法,该类方法接受std::function传递给目标函数对象的对象和变量号或参数。

这些变量参数可以是任何东西:变量、指向成员的指针等。

使用普通变量时我没有问题,但是如何扩展参数包,其中参数是指向成员的指针,但函数对象需要 POD 数据类型?

如何获取参数包中成员的指针值并将其传递给函数对象?

0 投票
3 回答
471 浏览

c++ - 在模板参数包上使用类型特征?

在下面的示例代码中,我试图检查函数参数是否是指针std::is_pointer

如果只有一个参数,它可以正常工作,但是如何使它与更多参数一起工作,例如在参数包中?

我猜如果参数不是全部指针或全部不是指针,那么我们还有其他问题,但我们假设所有参数都是指针或不是指针。

那么如果参数是指针和非指针的混合呢?

0 投票
1 回答
197 浏览

c++ - 模板模板可变参数包

有人可以用模板参数包解释下面的代码吗?它是如何工作的?在这种情况下,模板参数是如何打包和解包的:

可能的请求用法(受内部模板类型 std::vector<std::vector<T>> 的函数模板重载或专业化的启发)

0 投票
1 回答
74 浏览

c++ - 实例化模板时必须显式显示参数包中的类型吗?

我有一个例子来说明我的问题:

如果我想实例化这个模板:

编译器抛出错误:

所以我必须写这个:

这很烦人,特别是如果我有一些具有一长串参数的类。

那么有什么方法可以摆脱显式显示参数包中的类型

0 投票
1 回答
138 浏览

c++ - noexcept 说明符内的参数包

目前在C++这两种情况下都不可能,编译器抱怨它需要一个表达式。

这对我来说似乎微不足道,如果您正在构建一个具有可变数量类型的元组对象,如何检查所有这些类型是否都是nothrow default/ move/ copy constructible

这对我来说似乎是一个令人讨厌的语言缺陷。

有什么选择吗?

0 投票
2 回答
334 浏览

c++ - enable_if 中参数包的 sizeof... 问题

以下示例在所有主要编译器中均失败clanggccvisual studio.

我想知道它有什么问题,它似乎很简单:

如果sizeof...(TYPES) == 2那么它应该排除一个重载并接受另一个重载,如果 0、1 或大于 2,那么它应该接受第一个重载并排除第二个重载。

为什么这不能这样工作?

clang错误:

gcc错误:

visual studio错误: