我正在修復某些代碼中的另一個錯誤,並且遇到了一些我認爲是bug的代碼;但是,此代碼在gcc 4.4,4.5和4.6下編譯,並且看起來像「預期的」一樣起作用。任何人都可以告訴我,如果這是有效的C++?通過賦值給const引用的值返回
struct foo {
int bar;
};
foo myfunction(foo const &orig) {
foo fooOnStack = orig;
fooOnStack.bar *= 100;
return fooOnStack;
}
void myOtherFunction(foo const &orig) {
foo const &retFoo = myfunction();
// perhaps do some tests on retFoo.bar ...
}
如果這是有效的C++,有沒有人知道這背後的合法性是合法的?
規範的基本原理概述在這裏:[GotW#88:候選人爲「最重要的常量」](http://herbsutter.com/2008/01/01/gotw-88-a-candidate-for-在最重要的const的/)。 – ildjarn
此外,支持這種合法C++的標準是在C++ 03§12.2/ 5中。 – ildjarn
謝謝,我今天學到了一些C++。它是有道理的,但我以前從未使用它,並且知道不允許返回到非const引用。 – graphicsMan