auto

提供: Appmethod Topics
移動先: 案内検索

キーワード(アルファベット順):インデックス への移動


auto キーワードは C++11 標準で再定義されました。 したがって、Appmethod C++ では auto の 2 つの異なる定義をサポートしており、そのどちらになるかは、各 C++ コンパイラが準拠している標準で決まります。

このページでは、auto の両方の定義について説明します。

C++0x での定義

カテゴリ

記憶クラス指定子

構文

[auto] <data-definition> ;

説明

auto 修飾子を使用すると、ローカル スコープでのみ有効なものとしてローカル変数を定義できます。

これはローカル変数のデフォルトであり、使用されることはまれです。

void f() {
        auto int x;
}

C++11 での定義

カテゴリ

型指定子

構文

[auto] <variable_name> = <initializer_expression> ;

説明

auto は、セマンティクスを初期化子式から推測する単純型指定子として使用されます。

int f() {
        return 1;
}

int _tmain(int argc, _TCHAR* argv[]) {
        auto x = f();
        return 0;
}

この例では、変数 x の型はその初期化子式 f() から推測されます。 そのため、xint 型となり、これは、 f() が返す型です。

コード移行上の問題

When Clang 拡張 C++ コンパイラ は、古いauto 構文(つまり、auto記憶クラス指定子 として使用される)に遭遇すると、次の警告を発します:

[<compiler> Warning] File1.cpp(12): 'auto' storage class specifier is not permitted in C++11, and will not be supported in future releases.

関連項目