问题标签 [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++ - 带有 gcc 4.4 的模板模板参数和可变参数模板
我在 Debian 挤压上使用 gcc 4.4。考虑以下代码。
所以,这里的想法是T
matches string
、C
matchesmap
和模板参数包Args
matches int
。我可能有一些语法错误,如果是,请更正。特别是,如果一个人希望第一个模板参数class C
匹配T
,其余的匹配模板参数包Args
,template <typename T, typename... Args> class C
那么语法是否正确?
这给出了错误
这似乎类似于问题Variadic template templates and perfect forwarding。这个问题表明这是一个 gcc 错误,但也许我错误地认为这些问题是关于同一件事的。
请温柔一点。我对可变参数模板的了解还不到 12 小时;我只是想重写一些旧的 C++ 代码以减少重复。我也有一段时间没有做任何 C++ 了。如果有解决方法,请告诉我。谢谢。
编辑:Variadic 模板模板的评论中建议的解决方法和Ise Wisteria的完美转发对我有用,这表明这是同一个错误。当然,我现在(a)想知道这种解决方法有多脆弱,(b)它为什么有效,以及是什么促使 Ise 想到它。虽然我猜只有一诚可以回答最后一点。:-)
c++ - 可变模板模板参数
下面的代码用clang 3.0编译不出来,是不是我做错了?是因为c++11不允许还是因为clang不支持?
编译器错误:
c++ - 将可变参数模板链接在一起
如果X
将以下代码转换为使用 C++11 可变参数模板,并且应该支持任意数量的模板参数,它会是什么样子?
c++ - 可变参数模板类中的(简单)构造函数
构造函数和复制构造函数如何查找这个可变参数模板类?
c++ - 以相反的顺序迭代可变参数模板参数
如果我手动反转传递给它的模板参数的顺序,则以下代码有效:
例子:
我试图在这里解决这个问题:
例子:
但这以编译错误结束:
我做错了什么,他们是以相反的顺序进行折叠式操作的更简单方法吗?
c++ - 为什么在 C++11 中的类型参数包之后不允许使用整数值参数包?
没有例子,这个问题几乎没有意义。所以这就是我想要做的。
一般来说,C++ 允许以下内容:
但它的自然可变参数扩展似乎不起作用。
clang 和 g++4.7 都拒绝上述代码。错误显示在实例化完成的位置。在我看来,这两个可变参数列表应该被明确解析,因为第一个具有类型,而另一个只有整数值。
如果上述方法不起作用,我认为以下方法也不起作用。
我认为 Foo 模板是一个相当有用的东西。
c++ - 嵌套模板特化取决于封闭模板参数
在 gcc 4.5+ 上编译,但在 clang 3.1 和 icc 上都没有,都抱怨sizeof...(Indices)
. 它只是后者编译器中尚未实现的功能还是某些特殊情况?
谢谢,
布特
c++ - 嵌套可变参数模板:gcc 或 clang 中的错误?
以下代码不能使用 gcc 4.7 (20120114) 编译,但可以使用 clang++ 3.0 编译。这是 gcc、clang 中的错误还是仅仅因为我尝试做的事情在 c++11 中是不允许的?
上面的代码是我尝试做的一个非常简化的示例,但本质是我需要 args... 类型和 tags... 类型来计算函数的返回类型。如何才能做到这一点?