decltype(C++ 关键字):用于“推导并取得一个表达式的类型”。常见用途是根据变量、函数返回值或复杂表达式来声明新变量/返回类型,避免手写冗长类型。主要从 C++11 开始引入。
(在 C++ 中还有更细的规则:例如是否保留引用、是否按值推导等。)
/diːˈklɛp.taɪp/
decltype(x) y = x;
decltype(x) y = x;(y 的类型由 x 的类型推导得到。)
template <class T> auto begin_it(T& t) -> decltype(t.begin()) { return t.begin(); }
template <class T> auto begin_it(T& t) -> decltype(t.begin()) { return t.begin(); }(用 decltype 推导返回类型,使其与 t.begin() 的类型一致。)
decltype 是 decl(declaration,“声明”)+ type(“类型”)的缩合写法,字面含义接近“声明时取类型/由声明推得类型”。它体现了 C++11 以后对“类型推导(type deduction)”能力的增强。