我看到一些代码示例,其中用于实例化std::declval
模板函数的类型被指定为引用类型,而不仅仅是一个类型,如下所示:
std::declval<T &>()
相对于:
std::declval<T>()
T
某种类型在哪里。我错过了为什么选择引用符号而不是普通类型的微妙之处。有人可以向我解释一下吗?
我知道这std::declval
扩展为,typename std::add_rvalue_reference<T>::type
但我仍然想念为什么人们会通过引用类型而不是普通类型本身来实例化后者的原因。