1

我正在使用 Xcode 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. constusing不允许开启。
  3. 这是一些特殊情况。
  4. 这是编译器错误。

标准的预期行为是什么?

4

1 回答 1

3

这已经在 C++98 中被允许——通过 typedef 名称和模板参数可以多次引入 cv 限定符——它们只是被折叠了。如果不允许这样做,通用代码就会有很多问题。引用也会发生同样的事情。

§7.1.6.1 [dcl.type.cv] p1

有两个cv -qualifiers和. [...]冗余的 cv 限定被忽略。[注意:例如,这些可以由 typedefs 引入。——尾注]constvolatile

于 2013-05-31T11:59:41.853 回答