问题标签 [template-aliases]
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 上工作,但它不起作用,尽管参考表说它可以
我做错了吗?
c++ - 我可以使用别名模板专门化一个类模板吗?
这是一个简单的例子:
这是允许的吗?
c++ - How do template aliases affect template parameter deduction?
In C++03, template parameter deduction does not occur in some contexts. For example:
Here, int
is not deduced for T
, because a nested type such as A<T>::type
is a non-deduced context.
Had I written the function like this:
everything is fine because B<T>
is a deduced context.
In C++11, however, template aliases can be used to disguise a nested type in syntax similar to the second example. For example:
Would template argument deduction work in this case? In other words, are template aliases a deduced context or a non-deduced context? Or do they inherit the deduced/non-deduced status of whatever they alias?
c++ - 替换失败是依赖非类型模板参数的错误吗?
假设我有这些模板别名:
我可以在 GCC 中执行以下操作:
它打印:
是多态
的 不是多态的
这符合我的期望。
使用clang,该代码无法编译。它会产生以下错误消息。
它应该编译吗?两个编译器哪个有问题?
c++ - 使用模板别名、继承模板和使用“模板父级”类型时编译错误
我有一个具有以下要求的数据容器:
- 要快:因此是模板而不是正常的继承
- 使用不同的实现
- 能够使用更多方法扩展这些实现
- 数据是通过模板参数指定的,并且需要能够保存指向数据容器项的指针
我想出的解决方案如下:
这导致以下错误(gcc 4.7):
如果我使用T *data
而不是T data
(但我不想要那种间接),或者如果我不使用storage_container_impl
并且T data
直接在storage_container
. 使用storage_container_impl
mixin-style 也不能解决问题。作为container_ref
一个指针,也不应该有它不工作的原因,例如因为模板声明中有一个循环。这是问题的最小化版本。任何帮助,将不胜感激!
c++ - 模板别名和 sfinae
在涉及模板别名的替换失败的情况下(例如,缺少成员类型名上的模板别名,如下面的代码片段所示),是否应该触发错误?
Clang 和 gcc 似乎不同意这一点:
所以问题是:谁是正确的,为什么?
谢谢 :-)
c++ - 空格很重要的另一种情况(也许?)
这是另一种情况,其中空格在 C++ 中很重要,还是编译器错误?以下代码在语法上是否正确?
英特尔 C++ Composer 无法编译它说:“类型说明符的无效组合”。但是在签名中添加单个空格,它编译得很好:
c++ - c++11:通过别名模板对枚举类类型导数进行类型转换
考虑以下代码,它在 clang 中编译得很好,但在 gcc (4.7.2) 中编译得不好:
代码在 clang 中编译得很好,但在 gcc (4.7.2) 中,最终语句导致:
有问题的陈述与前3个陈述之间的区别是:
- 它涉及枚举类类型,而不是非枚举类类型。
- 它使用一个别名模板,它声明
typename
并::type
为方便起见
我的问题:以这种方式使用typename
(在“别名模板”中)是否符合 C++11 标准,即使typename
在不需要说明符的上下文中使用?或者这是 gcc 中的“语言不合规错误”?
c++ - 模板别名在模板类模板方法的参数中不起作用
当我声明参数类型由模板别名指定的模板类的模板方法时,出现编译错误。如果我将模板类更改为一个类,它会编译。如果我用实际类型(此处)替换模板别名Templ<bool>
,它也会编译。当它是模板类并且参数类型是模板别名时,为什么它不起作用?
编译器是 gcc 版本 4.8.0 (Ubuntu/Linaro 4.8.0-2ubuntu2~12.04)。