3

この質問に答える際に、キーワードの従来のCの意味(自動ストレージ)が、型の推論を意味するようになった今でもC++0xautoで有効かどうかという疑問が生じました。

auto私は、の古い意味は関連するところに残るべきであるが、他の人は同意しなかったことを覚えています。

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

コンパイラーを見ると、現在の部門がわかります。

  1. 自動の古い意味はもう許可されていません
    • VS10
    • g ++
  2. 自動の古い意味は、関連する場合に使用されます

どちらが正しい行動か知っていますか?

4

1 に答える 1

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を使用するプログラムは、形式が正しくありません。

于 2010-05-17T09:05:44.350 に答える