问题标签 [template-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++ 吗?
Clang(3.7.1)拒绝它,抱怨第二个T
阴影第一个T
。GCC 似乎并不关心它,我认为这是合理的。我认为只有参数数量在模板模板参数中很重要。
- http://goo.gl/51bHVG (gcc.godbolt.org)
c++ - 引用模板中的模板化函数
我希望能够命名模板中的模板化函数。
由于可以使用“模板模板”语法命名模板类,并且可以使用“函数指针”语法命名函数,我想知道是否有语法(或建议)来命名模板中的函数没有指定模板。
对于任何对此功能感兴趣的人来说,一种可能的解决方法是首先将函数 D 包装在一个带有名为(例如)“方法”的调用方法的结构中,将该结构作为“模板模板”参数传递给 E,然后调用“方法”在 E.
我不喜欢这种方法的原因是它需要一个包装结构,用于可能以这种方式使用的每个可变参数函数。
c++ - 如何将`std::array`用于`template`形式的模板参数类`?
请考虑以下tree
课程
这是没有明确定义的。std::array<T, N>
不是 的合适模板参数Tuple
。我认为 的意图static_tree
很明确。我们可以做类似的事情
helper
没有课程还有其他选择吗?
c++ - 也接受模板的模板参数(嵌套模板)
我试图避免代码重复,对于以下事情:
我有几种不同的地图类型,它们具有不同的type1
和type2
参数。在某些时候,我想静态检查什么是类型type1
,但type2
我不知道如何编译这个东西。我已经尝试了对该模板声明的几种变体,但它们似乎都不起作用。这甚至可能吗?
干杯,
c++ - 在可变参数模板模板参数中使用默认模板参数
我发现下面的最小示例适用于 gcc 和 clang 甚至 Visual Studio,但它不能使用 icc 编译。我正在尝试确定这是否是有效的 C++,但我无法找到标准的相关部分来回答我的问题,因为这是几个不同的概念相结合。
使用 icc (16.0.3),编译会出现以下错误:
这是有效的 C++ 吗?
对我来说似乎应该是,因为C
它的第二个模板参数有一个默认值,这意味着F<D>
withF = C
应该是一个有效的结构。
c++ - specialization of variadic templates with class templates
Here's an issue I ran across while playing with variadic templates. I have some code that uses specialization to count "interesting" types in a parameter pack like so:
This code works fine, but I run into problems if I want to use the same approach to count class templates:
The above code fails to compile, error is "expected a type, got 'vector'" on the line beginning with "struct count". I'm also unable to something simpler, all class templates accepting a single argument:
This code also fails to compile, complaining of "expected a type, got '_First'" once again on the line beginning with "struct count". Is someone familiar with a way to accomplish this goal using this approach (i.e. some modification that I can make to one or both of the specializations that will get them to compile and perform the desired calculation at compile time)?
EDIT: I want the parameter pack for vector to be unbound, similar to the following code for a simple container wrapper with variadic template-template parameters that also specializes on std::vector:
EDIT Seems like the final answer is that what I want to do can't be accomplished, but I have found a way to reframe the problem so that I cans solve it. Many thanks to those who helped.
c++ - 不指定内部类型的模板模板参数
我想知道是否有可能拥有具有以下行为的代码:
也就是说,我希望用户能够指定容器而不指定它所操作的类型。
例如,可能定义的一些(元)代码(不适用于上述代码)func
如下:
c++ - 具有通用向量和对类型的对向量,模板的模板
我想将一对向量传递给一个函数。实际的向量实现以及对的类型应该是模板参数。
我想到了这样的事情:
前 3 个是其他模板参数。最后一个模板参数应该允许传递一个vector
(std
或stxxl:vector
) std::pair
withuint32_t
或uint64_t
作为pair.first
and的类型pair.second
。
c++ - 在类成员函数中将模板类作为模板模板参数传递
我有一个项目需要同时使用 GCC-4.4.7 和 GCC-4.9.0 进行编译。
我们正在使用将模板类作为模板模板参数传递给另一个类的代码。虽然代码在 GCC-4.9.0 上编译良好,但在 GCC-4.4.7 上编译失败。
这是错误的再现:
编译时:
如何纠正错误并正确使其与 GCC-4.4.7 一起编译?
注意:仅限 C++98 标准,代码非常旧。
c++ - 可变参数 可变参数模板 模板参数
有没有一种简单的方法来获得可变参数模板模板参数。例如考虑以下函数签名
如果我们想通过两个Pack
s 我们现在必须做一个重载
现在,如果我们想传递Pack
具有不同可变参数的可变数量的对象,例如Args0...,Args1...,Args2...
.
所以我在想是否有一种实用的方法来做一些事情(以下肯定是一个草图表示)。