问题标签 [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 投票
5 回答
140 浏览

c++ - 知道其参数位置的 C++ 模板

我是 C++ 元编程的新手,几天前我决定用可变参数包编写一个模板,它知道参数包中的哪个位置首先出现int。更准确地说,我想要一个structwith nameGetIntPos和 with static constexpr int value,它指示参数包中的位置,int以 1 开头,如果参数包中没有int参数类型,则为 0。例如

如何做呢?

0 投票
2 回答
270 浏览

c++ - 带有参数包的模板专业化

我对 c++ 很陌生,但想尝试做一些花哨的模板。我不确定这是否可能,但我相当有信心有办法实现这一目标。

所以这里的问题是:我正在调用各种硬件函数,它需要许多参数,并且只有一种参数类型不同:

硬件接口根据索引的值返回一个标量、数组或矩阵。我真正想要实现的是一个函数,它返回一个Tvector<T>vector<vector<T>>取决于我传递的参数的数量。:

其中T是基本类型,如int, real, float,double等。

使用 3 个具有专业化的不同模板是没有问题的,但我很想以某种方式将它们结合起来。

我的假设是,这可以使用模板专业化来实现,但我无法理解它。我想我应该是这样的:

这是一个两头野兽。我很可能需要明确地实现我的 3 个案例以避免误用,但也想知道,我如何根据参数包的大小来实现模板专业化,参数包的大小不同。

我在 VS 2019 中使用最新的 msvc++

0 投票
2 回答
363 浏览

c++ - C++:获取参数包的头部和尾部

如何获取参数包的前 n 个元素?还是最后 n 个元素,或者 [n, n+1, ..., m) 中的元素切片?例如:

这可以通过 std::tuple、std::integer_sequence 和 std::get 的组合来实现,但我想知道是否有更简单的方法。

0 投票
1 回答
147 浏览

c++ - 递增参数包中的每个值

我目前正在尝试增加参数包中的每个值,该参数包中充满了某种未知类型的 std::vector::iterators。我目前正在努力弄清楚...语法是如何工作的。我本来想增加每个值,++input_starts ...但这只会给我一个编译器错误。以下是整个函数供参考:

0 投票
1 回答
84 浏览

c++ - C++:静态断言参数包匹配函数类型

给定函数类型void(), void(int), 等等...,我们static_assert()可以Args&&... args与函数类型兼容吗?

使用decltype(func(args...))会报错,但这不是最好的错误。此外,是否有可能static_assert()通过从编译器输出中隐藏这两种类型来使情况变得更糟?

0 投票
1 回答
82 浏览

c++ - 多个参数包作为工厂函数参数

我正在尝试创建一个工厂方法,该方法通过将组件类的构造函数参数作为模板参数包传递来实例化模板类。

模板根据和ProducerConsumer的类型进行参数化,这些类型由聚合。工厂函数的参数取决于参数化类的构造函数参数。ProducerConsumerProducerConsumer

我研究过如何在可变参数模板中有多个参数包?; 投票最高的答案只计算参数包中的参数,它不使用它们。我还查看了多个参数包——如何?,这对我的问题来说是相当无信息的,因为它传递了可变数量的相同类型的参数。

我现在所拥有的std::make_tuple关于无法转换为tuple私有基类的错误。

如何将可变数量和类型的参数转发给工厂函数中的两个不同构造函数ProducerConsumer::create()?此外,是否以及如何将 r 值引用应用于被转发的参数包?

0 投票
1 回答
41 浏览

c++ - 关于模板类语法

我想问一些关于模板类的问题。我知道以下基本知识:

但是,在我的编程作业的起始文件中,我看到了一种新格式:

在这里,我知道“...”是参数包,但是为什么类名后面还有一个“< >”?

0 投票
1 回答
26 浏览

c++ - 构造一个具有任意数量类型的元组,所有类型都可以从单一类型构造,并且非默认构造

我有一个元组

并想像这样构建 MyTuple

MyTuple foo{Foo1{x}, Foo2{x}, Foo3{x}, ... FooN{x}};

  • FooK不是默认可构造的
  • N在写入时未知。因此,我无法对上面的列表进行硬编码。

我所拥有的是

这是根据这里的建议构建的:Create template pack from set of traits,如下所示:https ://github.com/milasudril/libenum/blob/master/libenum/tuple.hpp 。

我是否需要添加一些 ctor 才能Enum::Tuple使其工作?

这里Enum::Tuple供参考:

0 投票
1 回答
79 浏览

c++ - C++ 参数包访问超出范围

我对参数包有点陌生,遇到了与超出范围索引相关的问题。为了简化问题,我想访问函数内参数包中的第 n 个元素(比如说第 3 个)。如果函数调用未传递 3 个(或更多)参数,则返回 nullptr。也许有一个递归解决方案可以安全地忽略较少参数的情况?

错误 C2338 元组索引超出范围
错误 C2672 'std::get': 找不到匹配的重载函数

0 投票
1 回答
44 浏览

c++ - 问:带有参数包的模板特化

我会直接回答这个问题。

我们有模板专业化:

一切都好。但是,如果我想在函数中添加参数包怎么办?

Visual Studio 给出错误 E0147。如何在不向类添加新功能的情况下做到这一点?

在此先感谢您的帮助!

祝你今天过得愉快!