问题标签 [variadic]
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.
g++ - C++ 中的 Mixin、可变参数模板和 CRTP
这是场景:我想要一个可以有可变数量的 mixin 的主机类(使用可变参数模板不太难——例如参见http://citeseerx.ist.psu.edu/viewdoc/summary?doi =10.1.1.103.144)。但是,我还希望由宿主类对 mixin 进行参数化,以便它们可以引用其公共类型(使用 CRTP 习惯用法)。尝试混合两者时会出现问题——我不清楚正确的语法。例如,以下代码使用 g++ 4.4.1 编译失败:
出现错误:
有没有人有将可变参数模板与 CRTP 混合的成功经验?
c++ - 关于可变参数模板
我目前正在使用新的 c++0x 可变参数模板,这很有趣,尽管我对成员实例化的过程有疑问。
在这个例子中,我试图模拟强类型枚举,并有可能选择一个随机有效的强枚举(这用于单元测试)。
我用这段代码得到的结果是:
有人能指出我在这里搞砸了什么吗???
ps:使用gcc 4.4.3
我对代码进行了重新设计,使其更加通用并尽可能减少硬核编码(@Matthieu M.)。但我想解释一下为什么我以前做这一切。
我有,因为许多开发人员在我的代码中接受了新的 c++0x 标准,我对此感到非常高兴。但是在尝试编写测试单元时,我遇到了强类型枚举的问题。
问题是您无法生成随机的强类型枚举(我知道,您可以,但希望以更优雅的方式进行)。所以,现在有了这段代码,我可以使用可变参数模板和可变参数宏(是的旧脏宏)声明并随机选择一个强类型和作用域的枚举。
这是代码:
现在困扰我的是 PP_NARG 宏的限制(我还没有找到任何其他方法来计算参数的数量)。
我很乐意接受任何指针或提示来增强这一点。
c++ - 没有可变参数模板的通用分配器类?
我正在尝试编写一个通用分配器类,它在空闲()时不会真正释放对象的内存,而是将其保存在队列中,如果请求新的对象,则返回先前分配的对象。现在,我无法理解的是如何在使用我的分配器时将参数传递给对象的构造函数(至少不诉诸可变参数模板)。我想出的 alloc() 函数如下所示:
尽管如此,我仍需要代码与当今的 C++(以及不支持可变参数模板的旧版本 GCC)兼容。有没有其他方法可以将任意数量的参数传递给对象构造函数?
c++ - 如何正确使用可变参数模板的引用
我有类似以下代码的内容:
我想使用即将发布的标准中建议的可变参数模板重新实现它。但是到目前为止我在网上看到的所有示例似乎都是类似 printf 的示例,这里的区别似乎是引用的使用。我想出了以下几点:
我想知道的是:
我应该使用 r 值而不是引用吗?
关于如何正确完成我想要的可能的提示或线索。
关于递归函数调用的问题,新提议的标准提供了哪些保证,是否有迹象表明上述可变参数版本将与原始版本一样最佳?(我应该添加内联或类似的吗?)
c++ - Binder 和可变参数模板最终出现分段错误
我写了以下程序
用 gcc 4.3.3 编译它并得到一个分段错误。在使用 gdb 和这个程序一段时间后,在我看来,函数和类的地址混淆了,并且不允许调用类的数据地址。此外,如果我使用注释行代替一切正常。
其他人可以重现这种行为和/或向我解释这里出了什么问题吗?
c++ - Boost.Tuple 是否与 C++0x 可变参数模板兼容?
我在玩可变参数模板(gcc 4.5)并遇到了这个问题:
GCC 错误信息:
如果我替换每次出现的boost::tuple
by std::tuple
,它编译得很好。
boost tuple 的实现有问题吗?或者这是一个 gcc 错误?
我现在必须坚持使用 Boost.Tuple。你知道任何解决方法吗?
谢谢。
c++ - 如何找到参数包的长度?
假设我有一个可变参数模板函数,比如
如何使用长度函数找到参数列表的长度?
haskell - 将函数应用于任意长的参数列表
我想创建一个函数 apply ,它接受一个带有任意数量参数的函数以及一个整数列表,并返回函数的结果(其中列表中的每个整数都是按顺序排列的参数。
我在想类似的事情:
但我知道这行不通,因为类型签名是错误的——该函数不采用 int 列表,它只需要一些 int 参数。
此外,当我到达基本情况时,要应用的 f 参数实际上应该是一个整数,无论如何都违反了类型签名。
有谁知道如何处理这类问题?
c++ - 用模板参数填充容器
我想将传递给可变参数模板的模板参数填充到一个固定长度的数组中。为此,我编写了以下辅助函数模板
以下类模板
并通过初始化静态常量
和
现在数组
是 a并且std::array<int, 3>
包含值1
和。我认为必须有一种更简单的方法来实现这种行为。有什么建议么?3
4
编辑:正如诺亚罗伯茨在他的回答中建议的那样,我修改了我的程序,如下所示:我写了一个新的结构来计算参数列表中的元素:
并编写了以下函数
现在我得到了
astd::array<int, 3>
与内容10
,20
和30
。有什么进一步的建议吗?
c++ - 如何有条件地编译可变参数模板?
是否有一个宏告诉我我的编译器是否支持可变参数模板?
如果它们不受支持,我想我会用一堆重载来模拟它们。有更好的想法吗?也许有可以减轻工作的预处理器库?