问题标签 [variadic-templates]

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 投票
2 回答
4487 浏览

c++ - 在可变参数模板中使用声明

这个问题的灵感来自于以下多重继承重载伪歧义的解决方案,这是一种为 boost::variant 实现 lambda 访问者的好方法,如本答案中所提议的:

我想做如下的事情:

我不确定为压缩类型列表添加 using 子句的正确语法是什么。该using子句对于阻止编译器抱怨operator()模棱两可至关重要,而完全不是,因为它们具有所有不同的签名。

0 投票
5 回答
16327 浏览

c++ - C++11 中的非类型可变参数函数模板

我看到一篇博客文章使用了非类型可变参数模板(gcc 目前不支持,只有 clang 支持)。

帖子中的示例编译得很好,但我无法让它与函数模板一起使用。

任何人都可以帮助找出正确的语法(如果存在的话)?

0 投票
3 回答
864 浏览

c++ - 可变参数模板 - 不完整类型

有这个代码:

我从 gcc 4.6.1 收到错误:

错误:嵌套名称说明符中使用的类型“Are_Same”不完整。

我认为这样做Are_Same<A,C...>::value我会调用递归调用,最后会简单地扩展为Are_Same<A,B>. 显然事实并非如此。任何人都知道我在哪里犯错?

0 投票
1 回答
146 浏览

c++ - 为可变参数模板添加的新语法实体的名称是什么?

C++11 引入可变参数模板

Args和的名称是params什么?我知道其中一个(至少?)被称为可变参数模板包,但它是什么?另一个叫什么?

0 投票
2 回答
1875 浏览

c++ - 无参数可变参数模板上的模棱两可的重载

有关的:


考虑这对可变参数模板:

这可以工作并编译。但是,没有第一个模板参数怎么写呢?

听起来微不足道?嗯,我就是这么想的。:-) 让我们考虑一些想法。

想法1:

行不通...当我尝试这个时,我想到了专业化,但转念一想,这不是它的工作原理。

在原始示例中,我创建了两个不同的重载模板,第一个采用 1 个模板参数,第二个采用 2 个或更多。没有歧义,也没有涉及专业化。我说对了吗?

想法2:

显然不会起作用,All<rest...>因为rest...为空不会扩展到对非模板函数的调用。

想法3:

让我们重新构建解决方案。

这个是不行的,因为 All(c) 会模棱两可。因此我需要有一个 0-arg 案例和一个 >0-arg 案例......或者 1-arg 案例和一个 >1-arg 案例呢?

想法#3.5:

是的,有效,但包含copypasta(在这种情况下很简单,但可能更大!),因此我会说它并不比我开始的更好。只是另一种解决方法。

想法#4:

让我们尝试#1,但使用类而不是函数。

这看起来很有希望,因为我可以专攻课程。但是,嘿,它是什么?

抱歉,未实现:无法将“rest ...”扩展为固定长度的参数列表

这不是 GCC 4.4 的事情吗?我在 MinGW GCC 4.6.1 (tdm-1) 上。


无论如何,我应该认为我不能直截了当地做这种基本的事情吗?是否需要使用带有额外虚拟模板参数的解决方法来完成此任务?

或者是否有一个简单、正确的变体来指定零参数的情况,这会起作用吗?

0 投票
2 回答
2068 浏览

c++ - 如何用数字序列解压可变参数模板参数?

如何(或是否可以)解压缩带有数字序列的参数包?例如,

<--线应该扩展到哪个

哪里n == sizeof...(T) - 1

目的是为 Boost.Python 创建一个 __init__ 函数,该函数接受具有预定义类型的元组。

0 投票
4 回答
1902 浏览

c++ - Boost 绑定占位符参数等于可变参数模板参数的数量

我想知道是否可以在 boost::bind 调用中使用传递给可变参数模板的参数数量作为占位符。

像这样的东西:

这可能吗?

谢谢

0 投票
5 回答
639 浏览

c++ - 使用可变参数模板的随机选择器功能 - 可能吗?

我想使用 C++11 的可变参数模板来实现一个通用的“随机选择器”功能。

像这样的东西...

...除了一般化以接受任意数量的参数(每个类型相同,如上所述 - 尽管接受任何类型作为参数并在返回时将所选类型转换为某些特定类型 T 也是可以接受的)。

我理解使用模板递归来实现类型安全 printf 等的想法。可变参数模板也可以用于创建上述那种功能吗?任何提示表示赞赏!

0 投票
2 回答
1439 浏览

c++ - 可变参数模板是潜在的代码膨胀吗?

可变参数模板可以将某些类型的函数重写为更干净、类型安全的版本。情况就是这样printf,如Wikipedia上给出的示例:

但是......据我了解模板,它们意味着每种类型组合的代码重复。所以上面printfs 的可变参数版本会被复制很多次。这对于大型函数或类来说可能很糟糕。

可变参数模板是否与代码重复的标准模板一样危险?如果是,继承技巧还有帮助吗?

0 投票
2 回答
166 浏览

c++ - 可变参数模板 - 有没有办法避免重复

在代码中(只需粘贴和复制)有没有办法避免模板参数的重复/列出(代码中标记的行):