C++0x 統一された関数宣言構文(N2582)

以前紹介した新たな関数宣言構文(N2541)は、関数の戻り値の型を後置するというもので
戻り値の型を後置する関数には先頭に auto を付加する必要があった


これを、ラムダ式と同じ書き方にするという提案が出ている


つまりこれが(auto を使用)

auto foo(int x) -> int
{
    return x;
}


こう変わる(lambda-introducer を使用)

[]foo(int x) -> int
{
    return x;
}

これにより、戻り値の型を後置する関数は"名前付きラムダ式"と言える


ローカル関数も以下のように書ける

bool foo(int value)
{
    []even(int x)->bool;

    []even(int x)->bool {
        return x % 2 == 0;
    }

    return even(value);
}

ラムダ式は戻り値の型を省略することもできるため
今回の関数宣言構文にも、ラムダ式と同様に暗黙の戻り値型演算を提供するかどうかを検討中のようだ



N2582 - Unified Function Syntax

C++0x言語拡張まとめ