gpt4 book ai didi

c++ - 如果函数调用是 return 语句,编译器能否自动 move 函数参数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:20:05 24 4
gpt4 key购买 nike

在以下情况下,编译器可以自动 move 函数参数 v 还是必须手动声明?

std::vector Filter(std::vector v);

void DoSomeStuffAndCallFilter(std::vector v)
{
// do some stuff to v

// can the compiler automatically std::move v in this call?
// ie. return Filter(std::move(v));
//
return Filter(v);
}

最佳答案

在您的情况下,编译器可以在 as-if 规则下作为允许的优化来执行此操作,因为它非常了解您的 std::vector 的析构函数和复制构造函数,因此可以证明可观察到的行为没有区别。

这仍然是一个“实现质量问题”,并且取决于正在进行的大量优化。

关于c++ - 如果函数调用是 return 语句,编译器能否自动 move 函数参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23781266/

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