c++ - 函数转发参数,什么都不做

标签 c++ c++14 perfect-forwarding

对于模板默认情况,我需要一个函数,它什么都不做,只是简单地转发它接收到的任何参数。具体来说,应该保留引用、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/

相关文章:

c++ - 异常抛出异常

C++ 14制作自定义迭代器,它将经过2并返回修改后的数据

c++ - 查找字符串可以减少为0的步骤数

c++ - 在 C++ 中异步读取文件

c++ - 必须在 GUI 线程中创建小部件错误!。如何更正代码?

c++ - 在 Linux 中监控程序的内存使用情况

c++ - Qt 插槽测试

c++ - 完美转发可变参数模板到标准线程

c++ - 如何保存静态可选值

c++ - 为什么在从通用引用推导类型时忽略 const?