std::declval是c++11标准中出现的一个函数模板,这个函数模板长得比较奇怪,因为它没有函数体(没有实现,只有声明,故意这样设计的),所以无法被调用,一般都是用于的decltype,sizeof等关键字配合使用进行类类型推导、占用内存空间计算等。它的源码如下:
template<typename T>
add_ravalue_reference_t<T> declval() noexcept;
add_ravalue_reference(注意末尾没有_t,add_ravalue_reference_t是该类型对应的别名模板)是c++标准库中提供的一个类模板,他的功能是传入一个类型,