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

c++ - 如何从尾部而不是头部拉出可变参数模板参数?

出于愚蠢的原因,我不会在这里讨论,我需要注释掉的行才能工作,而它上面的行不能工作:

我尝试_Arg与交换_Args...,但这不会编译(至少在 GCC 4.6 中):

如何从尾部而不是头部拉出物品?

0 投票
3 回答
1561 浏览

c++ - 带有可变参数的元组内容的部分特化

目前,我正在尝试让一些代码对不同的类型做出不同的反应。这不是确切的代码,但它传达了信息。

我已经尝试了比此代码显示的更多内容,但到目前为止没有任何效果,并且我遇到了在非命名空间范围内显式专业化的问题。作为参考,我正在开发 gcc 4.6(oneiric 服务器附带的那个),我相信它具有完整的可变参数模板支持。如果实现可以检测参数包的最后一个参数以及其他类型,我不在乎它有多难看。有什么建议么?

编辑:我想根据答案分享我使用的解决方案(这是一个例子)。

0 投票
6 回答
17723 浏览

c# - 在 C# 中模拟可变参数模板

有没有一种众所周知的方法可以在 C# 中模拟可变参数模板功能?

例如,我想编写一个方法,它采用带有任意参数集的 lambda。这是我想要的伪代码:

0 投票
1 回答
201 浏览

c++ - 如何使用可变参数模板获得默认参数的效果

我现在遇到这个问题有一段时间了,我不知道如何解决它。上下文是 C++ 中的反射系统。这个问题的一个瘦身解释是这样的。我有这两个结构。一种是表示 ClassType 类型的多个父类,另一种是表示孤儿类(ClassType 类型且没有父类的类)

然后在我要反映的类的声明中,我使用这个宏,类 ReflectionHelper::Parents 是上面的类

孤儿类的用法是:

现在的问题是 __VA_ARGS__ 是空的,而

因此无效。

我想解决这个问题的一种方法是使用默认模板参数,但它不允许使用可变参数模板。

有人有解决这个问题的技术吗?

非常感谢

0 投票
2 回答
6977 浏览

c++11 - 用于函数调用的可变参数模板参数包扩展

我正在寻找类似的东西:

如果参数包扩展是在另一个函数调用中完成的,它可以工作:

参数包扩展也适用于基类初始化器列表。

是否有任何解决方案也适用于返回“void”的函数。上面的解决方法不会,而在参数列表中使用返回 void 的函数调用永远不会起作用。

有任何想法吗?

0 投票
1 回答
136 浏览

c++11 - 具有可变数量参数的函数调用

是否可以根据模板参数的数量构造具有可变数量参数的函数调用(在函数模板内)?就像是:

0 投票
6 回答
71102 浏览

c++ - make_unique 和完美的转发

std::make_unique为什么标准 C++11 库中没有函数模板?我发现

有点冗长。下面的不是更好吗?

new很好地隐藏了类型,并且只提到了一次类型。

无论如何,这是我尝试实现的make_unique

我花了很std::forward长时间来编译这些东西,但我不确定它是否正确。是吗?究竟是什么std::forward<Args>(args)...意思?编译器对此有何看法?

0 投票
2 回答
428 浏览

c++ - 元运算符的优先级是什么...?

...解压模板类型参数包的元操作符的优先级是多少?我想它相当低,但它有多低?C++ 标准说:

运算符的优先级不是直接指定的,但可以从语法中得出。

有人愿意挑战吗?当然,...不会出现在 C++03 运算符优先级表中。


好吧,如果...不是运算符,那么究竟是什么决定了它std::forward<Args>(args)...适用于整个序列std::forward<Args>(args)而不只是(args),例如?

0 投票
4 回答
4188 浏览

c++ - 使用 C++11 initializer_list 实现类似 std::array 的容器

唯一且 imo 非常不方便的警告std::array是,它不能像内置 C 数组那样从初始化列表中推断出它的大小,它的大小必须作为模板传递。

是否可以使用 initializer_list 实现类似 std::array 的容器(内置 C 数组的薄包装器)C++11

我问是因为,与 std::array 不同,它会自动从初始化列表中推断出数组的大小,这更方便。例如:

如果没有提供初始化列表,我们还想提供一个构造函数来指定大小。例如:

这也将使容器与其他标准容器(例如向量、双端队列和列表)更加一致。

据我所知,这是不可能的,因为包装的 C 数组,例如 T elems [size],必须具有恒定的大小,并且 initializer_list 的 size() 成员函数不是恒定的。

另外,我想知道是否可以使用可变参数模板来实现这样的容器,尽管从我读过的内容来看,我认为这是不可能的。

0 投票
1 回答
4351 浏览

c++ - 可变参数模板多维数组容器

在 C++0x Variadic Templates Proposal 论文链接中,有一个支持任意维数的类的示例。我在下面复制了它:

遗憾的是没有提供实现。由于我对可变参数模板相对较新,我很想看看这个容器的实现。

感谢任何可以提供简单实现的人。