4

autoこれは変数のデフォルトであるため(静的とは反対)、以前は少し使用されていました。質問参照して ください。ただし、おそらく自明のように、このキーワードが使用された有効なC++03コードを検討してください。

auto int foo2 = 8;

C ++ 03でコンパイルされ、C++11ではコンパイルされません。C ++ 03との下位互換性がない理由はありますか?このキーワードが使用されなかったという標準的な委員会の意見の源は何でしたか?キーワード使用の統計はありますか?

ところで、私はgccでテストしました-多分これはコンパイラのバグですか?

4

2 に答える 2

17

これは互換性を損なうことが知られており、規格の付録C2.3条項7に記載されています。自動車がどれほど役に立たなかったか、そしてコストを修正するのが本当に簡単であることを考えると、許容できると考えられました。

キーワード統計について:巨大なコードベースを持ついくつかの企業が委員会に参加しており、おそらくそれが受け入れられるかどうかは知っていますが、私は完全な統計を掘り下げることができませんでした。

私はいくつかの標準的な考古学を行いましたが、最も古い論文はautoN1478のようです。これは、自動車について最初に議論したリフレクターメッセージを指します(後の論文はすべて、互換性の破れや推論については触れていません)。

于 2012-08-23T14:18:46.420 に答える
12

これはC++11から削除されました。これは、の新しい使用法がありauto、動作を許可すると混乱するためauto auto foo2 = 8;です。この古くて無意味な宣言を削除しても、重要なことは何も失われません。

于 2012-08-23T14:19:53.353 に答える