decltype
C++ 11で学習しています。
auto
との機能がdecltype
重複しているようで、 が必要な理由がわかりませんdecltype
。
wikiによると、その主な用途は汎用プログラミングであり、テンプレート パラメーターに依存する型を表現することはしばしば困難であるか、不可能ですらあります。
ジェネリック プログラミングでは、auto
型を表現するのが難しい場合に使用できます。
template <typename T>
void MakeAnObject (const T& builder)
{
auto val = builder.MakeObject();
// do stuff with val
}
が必要な理由がわかりませんdecltype
。
できdecltype
ないことをauto
できるか?