2014-01-01

C++11の新しい関数の宣言

以下はC++03の関数の宣言である。

// int型の仮引数を一つ取り、int型の戻り値を返す関数
int f( int ) ;

以下は、C++11から追加された、新しい関数の宣言である。

auto f( int ) -> int ;

もちろん、関数へのポインター型の宣言にも使える。

// C++03
int (*fp)(int) ;

// C++11
auto (*fp)(int) -> int ;

新しい関数の宣言は、単に文法が変わっただけで、意味は変わらない。ただし、戻り値の型を後置できる文法なので、そのためにコードがわかりやすくなる。

例えば、ポインターを返す関数へのポインターが書きやすくなる。

// C++03
int * (*fp)() ;

// C++11
auto (*fp)() -> int * ;

他にも、複雑な関数テンプレートを書く際にも使いやすくなる。

C++14では、新しい関数宣言の文法をさらに拡張して、戻り値の型推定の機能が追加された。

// 戻り値の型はint
auto f( )
{
    return 0 ; 
}

No comments: