Является ли `auto int i` допустимым C ++ 0x? - PullRequest
3 голосов
/ 17 мая 2010

При ответе на этот вопрос возник вопрос о том, действительно ли традиционное C значение ключевого слова auto (автоматическое хранение) все еще действует в C ++ 0x Теперь, когда это означает, что вычет типа.

Я помню, что старое значение auto должно оставаться там, где это уместно, но другие не согласны.

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

Глядя на компиляторы, я вижу текущее разделение.

  1. Старое значение auto больше не разрешено
    • VS10
    • г ++
  2. При необходимости используется старое значение auto

Знаете ли вы, какое правильное поведение?

1 Ответ

15 голосов
/ 17 мая 2010

Нет, это не так. Фактически, §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 в контексте, явно не разрешенном в этом разделе, неверна.

...