【发布时间】:2020-10-24 04:51:04
【问题描述】:
在下面的 sn-p 中,由于复制省略,A 没有移动也没有副本发生
struct A;
A function1();
A function2();
int main(int argc, char**) {
if (argc > 3) {
A a = function1();
} else {
A a = function2();
}
return 0;
}
这很好,但是在 if 块之外无法访问 a。当在外面声明a时,就会发生一个动作
struct A;
A function1();
A function2();
int main(int argc, char**) {
A a;
if (argc > 3) {
a = function1();
} else {
a = function2();
}
return 0;
}
当复制省略应该发生在调用站点的 if 块中到 if 范围之外的变量中时,什么是值得推荐的从复制省略中获利的方法?
【问题讨论】:
标签: c++ conditional-statements c++17 copy-elision