问题标签 [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.

0 投票
2 回答
2697 浏览

c++ - 我可以使用模板别名作为模板模板参数吗?

我可以使用模板别名作为模板模板参数吗?

0 投票
1 回答
2132 浏览

c++ - 模板别名不起作用

我正在尝试让模板别名在 clang 上工作,但它不起作用,尽管参考表说它可以

我做错了吗?

0 投票
3 回答
3350 浏览

c++ - 我可以使用别名模板专门化一个类模板吗?

这是一个简单的例子:

这是允许的吗?

0 投票
3 回答
1381 浏览

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?

0 投票
1 回答
1763 浏览

c++ - 替换失败是依赖非类型模板参数的错误吗?

假设我有这些模板别名:

我可以在 GCC 中执行以下操作:

它打印:

是多态
的 不是多态的

这符合我的期望。

使用clang,该代码无法编译。它会产生以下错误消息。

它应该编译吗?两个编译器哪个有问题?

0 投票
1 回答
175 浏览

c++ - 使用模板别名、继承模板和使用“模板父级”类型时编译错误

我有一个具有以下要求的数据容器:

  • 要快:因此是模板而不是正常的继承
  • 使用不同的实现
  • 能够使用更多方法扩展这些实现
  • 数据是通过模板参数指定的,并且需要能够保存指向数据容器项的指针

我想出的解决方案如下:

这导致以下错误(gcc 4.7):

如果我使用T *data而不是T data(但我不想要那种间接),或者如果我不使用storage_container_impl并且T data直接在storage_container. 使用storage_container_implmixin-style 也不能解决问题。作为container_ref一个指针,也不应该有它不工作的原因,例如因为模板声明中有一个循环。这是问题的最小化版本。任何帮助,将不胜感激!

0 投票
1 回答
1439 浏览

c++ - 模板别名和 sfinae

在涉及模板别名的替换失败的情况下(例如,缺少成员类型名上的模板别名,如下面的代码片段所示),是否应该触发错误?

Clang 和 gcc 似乎不同意这一点:

所以问题是:谁是正确的,为什么?

谢谢 :-)

0 投票
1 回答
531 浏览

c++ - 空格很重要的另一种情况(也许?)

这是另一种情况,其中空格在 C++ 中很重要,还是编译器错误?以下代码在语法上是否正确?

英特尔 C++ Composer 无法编译它说:“类型说明符的无效组合”。但是在签名中添加单个空格,它编译得很好:

0 投票
0 回答
338 浏览

c++ - c++11:通过别名模板对枚举类类型导数进行类型转换

考虑以下代码,它在 clang 中编译得很好,但在 gcc (4.7.2) 中编译得不好:

代码在 clang 中编译得很好,但在 gcc (4.7.2) 中,最终语句导致:

有问题的陈述与前3个陈述之间的区别是:

  1. 它涉及枚举类类型,而不是非枚举类类型。
  2. 它使用一个别名模板,它声明typename::type为方便起见

我的问题:以这种方式使用typename(在“别名模板”中)是否符合 C++11 标准,即使typename在不需要说明符的上下文中使用?或者这是 gcc 中的“语言不合规错误”?

0 投票
1 回答
301 浏览

c++ - 模板别名在模板类模板方法的参数中不起作用

当我声明参数类型由模板别名指定的模板类的模板方法时,出现编译错误。如果我将模板类更改为一个类,它会编译。如果我用实际类型(此处)替换模板别名Templ<bool>,它也会编译。当它是模板类并且参数类型是模板别名时,为什么它不起作用?

编译器是 gcc 版本 4.8.0 (Ubuntu/Linaro 4.8.0-2ubuntu2~12.04)。