decltype (declare type)
decltype 相当于 typeof。
可以用来申明一个返回类型
template<typename T1, typename T2>
decltype(x+y) add(T1 x, T2 y);
使用 decltype 可以使得编译器找到表达式的类型。
可以用于 lambda 表达式
auto cmp = [] (const Person& p1, const Person& p2) {
return p1.lastname() < p2.lastname() ||
(p1.lastname() == p2.lastname() &&
p1.firstname() < p2.firstname());
}
···
std::set<Person, decltype(cmp)> coll(cmp);
面对 lambda,我们手上往往只有 object,没有 type,要获得其 type 就得借助于 decltype