gpt4 book ai didi

c++ - 使用 std::forward 将参数转发给另一个函数

转载 作者:搜寻专家 更新时间:2023-10-31 00:33:28 26 4
gpt4 key购买 nike

我有很多如下形式的方法

foo(std::string const & name)
if (name.empty()) {...}

我试图遵循 Scott Meyers 关于使用通用引用和 std::forward 的注释来制作一个有效采用多种字符串形式的函数。

从示例中,我了解如何使用 std::forward 将函数参数转发给另一个函数,但是我该如何处理 name.empty() 表达式?

我认为答案是 std::forward(name).empty() 但我可以找到任何实际说明这一点的文档。

最佳答案

仅当您确实需要转发值类别时才使用std::forward。也就是说,std::forward 用于保证如果您的函数使用左值参数调用,那么它将调用另一个带有左值参数的函数,如果您的函数使用右值参数调用,则它将调用另一个带有右值参数的函数。

在您要检查字符串是否为空的情况下,参数是左值还是右值并不重要——string::empty 函数的行为不应不同.所以你不需要 std::forward。相反,只需 name.empty() 就足够了。

关于c++ - 使用 std::forward 将参数转发给另一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28571259/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com