gpt4 book ai didi

c++ - 按值传递临时值时如何避免 move 省略?

转载 作者:行者123 更新时间:2023-11-30 02:39:43 25 4
gpt4 key购买 nike

在下面的代码中:

Widget makeWidget()
{
return Widget();
}

void foo(Widget widget)
{
...
}

foo(makeWidget());

Widget 对象将始终就地构造(在 foo 函数内),因此不会发生 move 构造(至少对于我尝试过的所有编译器)。以实际发生 move 构造的方式(无需显式 move ,即使用 std::move)按值将临时对象传递给函数的简单示例有哪些?

最佳答案

在这种情况下省略的标准是:

when a temporary class object that has not been bound to a reference would be copied/moved to a class object with the same cv-unqualified type

因此,防止省略的一个简单方法是将其绑定(bind)到一个引用:

foo(std::move(makeWidget());

关于c++ - 按值传递临时值时如何避免 move 省略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29513864/

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