C++0x 新たな関数宣言構文

以下のように、戻り値の型を後ろに書けるようになる

// now
std::vector<double> foo(double);

// new
auto foo(double) -> std::vector<double>;

戻り値の型を後置すると、decltype でパラメータを計算した型を戻り値の型にできる

template <class T, class U>
auto foo(T t, U u) -> decltype(t * u)
{
    return t * u;
}

いろいろ応用できそうな気がする


N2541 New Function Declarator Syntax Wording

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