decltype(式)によって、名前や式から型(C++)を得ることができる。
ただし、結果は式の値カテゴリの影響を受け、T、T&、T&&のいずれかになることがある。
例えば、xがint型の変数なら、decltype(x)はintだが、decltype((x))はint&になる。
これは、xは名前そのものとして扱われるのに対し、(x)は括弧で囲まれた式として扱われるためである。
decltypeでは、この違いが結果の型に影響する。
用途:
- 式や名前から型を取り出す
- 関数の戻り値型を表現する
- 関連型を取り出す
int x{ 0 };
decltype(x) a{ 1 }; // int
decltype((x)) b{ x }; // int&auto g(int a, int b) -> decltype(a + b)
{
return a + b;
}decltype(arr)::size_type i{ 0 };