`auto int i`是否有效C ++ 0x?

时间:2010-05-17 08:58:26

标签: c++ c++11 standards-compliance

在回答this question时,问题是关键字auto(自动存储)的传统 C 含义在 C ++ 0x中是否仍然有效现在它意味着类型扣除。

我记得auto的旧含义应保留在相关的位置,但其他人不同意。

auto char c = 42; // either compilation error or c = '*'

看看编译器,我看到了当前的部门。

  1. 不再允许使用auto的旧含义
    • VS10
    • g ++
  2. 相关时使用auto的旧含义
  3. 你知道哪种行为正确吗?

1 个答案:

答案 0 :(得分:15)

不,不是。实际上,§7.1.6.4/ 3给出了以下示例:

auto x = 5; // OK: x has type int
const auto *v = &x, u = 6; // OK: v has type const int*, u has type const int
static auto y = 0.0; // OK: y has type double
auto int r; // error: auto is not a storage-class-specifier

如您所见,它会导致错误。 §7.1.6.5与这笔交易密切相关:

  

在本节未明确允许的上下文中使用auto的程序格式不正确。