gpt4 book ai didi

c++ - 移动到函数的最后一行

转载 作者:搜寻专家 更新时间:2023-10-31 01:48:34 32 4
gpt4 key购买 nike

我在方法中有一个对象。该对象按值传入,在函数中修改,然后作为参数传递给 std::make_tuple,然后立即返回。

std::tuple<bool, X> func(X x)
{
// Modify x
// ...
return std::make_tuple(true, x);
}

我的问题是,x传递给std::make_tuple时会被移动吗?我知道如果我只是返回它它会被移动,但由于我将它传递给一个函数,它会被移动到函数中还是我需要将它包装在 std::move 中?

最佳答案

will x be moved when it is passed to std::make_tuple?

不,它不会被移动,因为它是一个左值。在一种情况下,当从函数返回左值时,左值可以被视为右值,但在您的示例中则不然——请参阅 C++11 标准的第 12.8/32 段。

如果你想从 x 中移走,你必须明确地说:

return std::make_tuple(true, std::move(x));

关于c++ - 移动到函数的最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17633410/

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