const类型到C ++ 11中的const别名

时间:2013-05-31 11:48:59

标签: c++ alias

我正在使用Xng 4.6.2(4H1003)中包含的Clang。

Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn)

目前我的编译器没有为此代码编译错误。

using AA = int const;
static AA const aa  =   0;

因为我不熟悉准确的C ++ 11规范,所以我不知道什么是正确的行为。

  1. const个关键字的错误。
  2. const using不允许。
  3. 这是一些特例。
  4. 这是编译器错误。
  5. 标准的预期行为是什么?

1 个答案:

答案 0 :(得分:3)

这已经被C ++ 98允许了 - 可以通过typedef名称和模板参数多次引入cv-qualifiers - 它们只是简单地折叠了。如果不允许这样做,通用代码会有很多问题。对于参考文献也会发生同样的事情。

§7.1.6.1 [dcl.type.cv] p1

  

有两个 cv-qualifiers constvolatile。 [...]
  忽略冗余cv资格。 [注意:例如,这些可以由typedef引入。 -end note ]