c++中的declval和decltype
add_rvalue_reference:是C++标准库中的类模板,它的能力是给进来一个类型,他能够返回该类型的右值引用类型。
比如: a)给进来一个int类型,返回的就是int &&
b)给进来一个int &类型,返回的还是int &类型。这里用到了引用折叠。
c)给进来一个int &&类型,返回的还是int &&类型。这里依旧用到了引用折叠知识。
std::declval的功能:
返回某个类型T的右值引用,不管该类型是否有默认构造函数或者该类型是否可以创建对象。
返回某个类型T的右值引用 这个动作是在编译时完成的,所以很多人把std::declval也称为编译时工具。