理解使用 std::forward 来转发参数
在 C 中,std::forward 提供了一种机制来保留将参数传递给另一个函数或可调用函数时的引用。使用它可以确保左值参数保持其左值引用,而右值参数保留其右值引用。
何时使用 std::forward
问题中的示例演示了std::forward 的有利使用。函数 foo 接受右值引用 (T&& arg) 并将其转发给 bar。这允许 bar 接收 arg 作为右值引用,即使它最初是左值。
在参数中使用右值引用
是的,在参数声明中使用 && 是在所有情况下都有效。但是,带有 && 参数的函数可能采用左值或右值引用。如果将左值传递给带有 && 参数的函数,则该函数无法修改左值的引用对象。
模板和转发示例
在第二个函数示例中, std::forward 不是必需的,因为 doSomethingElse 接受与传递给 doSomething 的参数类型相同的可变数量的参数。但是,如果 doSomethingElse 需要转发,您将使用与第一个示例类似的 std::forward。
多重转发
正如答案中提到的,转发一个参数更多超过一次通常是不可取的。这是因为转发通常涉及移动参数,一旦移动,就不能再使用。 doSomething 将 args 转发到 doSomethingElse 和 doSomethingWeird 的示例将导致错误,因为第二次转发将尝试移动已移动的对象。
以上是** std::forward 如何确保 C 中正确的参数引用保存?**的详细内容。更多信息请关注PHP中文网其他相关文章!