gpt4 book ai didi

c++ - C++11 是否保证 return 语句中的局部变量将被 move 而不是复制?

转载 作者:可可西里 更新时间:2023-11-01 18:26:12 36 4
gpt4 key购买 nike

#include <vector>

using namespace std;

struct A
{
A(const vector<int>&) {}
A(vector<int>&&) {}
};

A f()
{
vector<int> coll;
return A{ coll }; // Which constructor of A will be called as per C++11?
}

int main()
{
f();
}

coll一个xvaluereturn A{ coll }; ?

C++11是否保证A(vector<int>&&)将在 f 时调用返回?

最佳答案

C++11 不允许 coll从中 move 。它只允许 return 中的隐式 move 当你做 return <identifier> 时的陈述, 其中<identifier>是局部变量的名称。任何比这更复杂的表达式都不会隐式 move 。

比这更复杂的表达式不会经历任何形式的省略。

关于c++ - C++11 是否保证 return 语句中的局部变量将被 move 而不是复制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42443495/

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