decltype(x)
マクロ内ではx
オブジェクトの型が不明であるため、マクロ内で が変数名として使用されているのがわかります。
例えば:
decltype(x) y = expr;
auto
の代わりに を簡単に使用できます。では、の代わりに変数型宣言が必要な状況とはdecltype
どのような状況でしょうか?decltype
auto
ベストアンサー1
decltype
コンパイル時に評価される未知の型を返す必要がある場合に便利です。
template<class A, class B>
void MultiplyAB(A a, B b, decltype(a*b)& output)
{
output = a * b;
}
さらに、出力が参照によって処理される方法が気に入らない場合は、遅延指定の戻り値の型を使用することもできます (また、 も使用できますdecltype
)。
template<class A, class B>
auto MultiplyAB(A a, B b) -> decltype(a*b)
{
return a * b;
}
これらすべて、そしてそれ以上のことは、B.ストロウストルップによって次のように説明されている。C++ よくある質問。