对于模板默认情况,我需要一个函数,它什么都不做,只是简单地转发它接收到的任何参数。具体来说,应该保留引用、const-ness 等。编写 transparent(/* something */)
应该完全等同于编写 /* something */
。
以下函数定义对于实现该目的是否正确?
template <class S>
decltype(auto) transparent (S && s) { return std::forward<S> (s); }
最佳答案
添加一个 constexpr
就可以了。 prvalues 将产生 xvalues;然而,这并不能改进,因为无法使用重载决议来区分纯右值和虚值。
您将无法将 0
作为空指针常量或字符串文字作为初始值设定项正确转发,但实现此目的的唯一方法是宏(这不是您要的去)。
关于c++ - 函数转发参数,什么都不做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34461809/