问题标签 [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.
c++ - C ++ 11中的最小和最大可变参数模板变体?
我是否正确地阅读了从min
和max
(minmax
就此而言)有新的initializer_list变体但没有Variadic Template变体的标准?
因此,这没关系:
但这不是:
我想,很多人会期望 Variadic Templates 可以轻松实现这一点,因此他们可能会感到失望。
我会说将VT用于min
并且max
会矫枉过正
- 可变参数模板能够处理多种类型
- 初始化器列表检查所有类型在设计上是否相同
因此 IL 更适合这项任务。
我的解释正确吗?
c++ - 可变参数模板和类型特征
我目前有一个可变参数函数,它接受任意数量的任意类型的参数(duh),但是,我想将类型限制为仅 POD 的类型,并且与 void* 的大小相同或更小。
void* 检查很简单,我只是这样做了:
但是我不知道如何对 std::is_pod 做同样的事情。
这可能吗?
c++ - 漂亮的打印 std::tuple
这是我之前关于漂亮打印 STL 容器的问题的后续,为此我们设法开发了一个非常优雅且完全通用的解决方案。
在下一步中,我想std::tuple<Args...>
使用可变参数模板包括漂亮的打印(所以这是严格的 C++11)。对于std::pair<S,T>
,我简单地说
打印元组的类似结构是什么?
我尝试了各种模板参数堆栈解包,传递索引并使用 SFINAE 来发现我何时位于最后一个元素,但没有成功。我不会用我损坏的代码给你带来负担;希望问题描述足够直截了当。本质上,我想要以下行为:
包含与上一个问题相同级别的通用性(char/wchar_t,对分隔符)的奖励积分!
templates - C++0x:在多个迭代器上应用函数
我正在尝试编写一个将函数映射到多个迭代器的函数。会是这样的
然后出现的问题是 fun_over_variadic_args 中的函数 Fun 需要模板化,这意味着它不能是 lambda,也不能是需要污染全局命名空间的本地函数对象。
有人知道更好的解决方案吗?
谢谢
编辑:请注意,我想要尽可能快的速度,因此首选保留内联所有函数调用的可能性的解决方案。
Edit2:刚刚意识到我可以使用匿名名称空间将 Fun 函数的范围限制为一个文件。如果存在的话,我仍然很想知道一个更整洁的解决方案。
替代解决方案我发现只要将结果传递给另一个函数,我就可以将函数 fun 应用于可变参数包。因此,如果我有一个函数 fun 想应用于每个参数,我可以做类似的事情
澄清替代解决方案然而,使用这个意味着 fun 不能返回 void
c++ - 空参数包的模板特化
我有一个可变参数模板函数,它调用自身来确定列表中的最大数字(由模板化参数构成)。我正在尝试对参数包为空时进行专门化,因此我可以只返回列表前面的数字,但我不知道该怎么做。我刚刚熟悉可变参数模板和模板专业化,但这是我目前所拥有的:
但是,这会产生以下错误:
我也试过这个,只是想看看它是否可以工作(尽管它随机将数字 0 引入列表,因此它永远不会返回小于 0 的数字):
但是,除了上面提到的错误之外,我还收到了这个错误:
那么我应该怎么做才能让它工作呢?
我正在使用带有-std=c++0x
标志的 g++ 4.5.2。
c++ - 可变参数模板模板和完美转发
本质上,我想自动创建像std::make_pair
,这样的函数std::bind1st
,std::mem_fun
这样就不必为每个模板类类型编写不同的函数,您可以编写一个单一的可变参数模板模板函数来一次处理所有情况。此功能的用法如下:
可以写这个函数make
吗?我已经尝试过了,但它在 GCC 4.5 或 4.6 中不起作用:
如果我尝试打电话(例如)make<std::pair>(1, 2)
我会得到
我在这里的任何地方都有语法错误吗?
或者这是对的,而 GCC 是错的?
或者这在 C++0x 中根本不可能?
[编辑]
提案N2555似乎表明这是允许的,并且GCC 声称已在 GCC4.4 中实现了它。
c++11 - 可变参数模板问题
我正在尝试编写一个通用代码来比较 std::functions 使用它的 target() 模板方法。这是我的非通用示例代码:
这可以使用 gcc 4.6.1 -std=c++-x 编译并运行良好。但是,当我尝试编译以下通用 cmp 函数时,编译器会因解析错误代码而失败:
错误代码是:
有什么提示吗?
c++ - 比较可变参数模板
如果我有两个可变参数模板参数,A
并且B
,我如何在编译时确保所有成员的 A
类型也是B
(以相同顺序)的子集的类型?
人为的例子:
c++11 - 实现具有 const 正确性的可变参数 zip 函数
我正在尝试实现一个zip
功能。 zip
的参数是 each wrapped<Ti>
,其中Ti
因参数而异。
zip
接受这些wrapped<Ti>
s 并产生一个wrapped<tuple<T1&,T2&,...TN&>>
,或者换句话说,一个包装tuple
了对其参数的引用。引用应保留const
-ness。
这是我第一次尝试zip
使用一个参数,但通常不起作用:
有没有办法用单一版本的zip
?