我必须决定返回带有对象的查询结果还是通过引用传递给它们。查询将至少委派一次。如果我返回一个对象并进一步委托它,是否有编译器 RVO。这是一个例子:
struct foo {int a, b, c, d;}
struct b {
Foo foo() {Foo foo; /*calculate_with_foo;*/ return foo;}
void foo1(Foo& foo) { /*calculate_with_foo;*/ }
}
struct delegator {
Foo foo() {return b.foo();}
void foo1(Foo& foo) {b.foo1(foo);}
b b;
}
// Performes this slower or is here RVO at work?
delegator d;
foo result = d.foo()
// pass by reference, faster?
foo resultr;
d.foo1(resultr);