decltype关键字可以让编译器找到一个表达式的类型。C++11以前无法通过对象来获得type,必须确实知道对象的类型才可以,以下为使用例子:
decltype主要有以下3种应用场景:
1.声明返回类型
这里是采用auto和->decltype指定了add函数返回类型的方式,即声明了add函数的返回类型
2.应用于元编程(metaprogramming,就是在模板中的运用和操作)
3.用于获得lambda表达式的类型
下面的cmp就是一个lambda对象,而lambda对象的类型一般很难写出,而在定义一个set对象的时候,又需要给出cmp的类型,因此这里用decltype来获取。