C++0x - decltype

sizeofの型を返す版

int n1 = 3;
decltype(n1) n2 = 10; // int n2;

decltype(n1 + n2) value; // int value;

関数の戻り値の型でもOK

int foo();

decltype(foo()) value; // int value;
template <class Iterator>
void something(Iterator first, Iterator last)
{
    decltype(*first) value; // ↓の場合、int value;

    ...
}


vector<int> v;
something(v.begin(), v.end());

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