Я исправлял еще одну ошибку в каком-то коде и натолкнулся на какой-то код, который, как я думал, был ошибкой; однако этот код компилируется под gcc 4.4, 4.5 и 4.6 и, по-видимому, функционирует как "ожидаемый". Может ли кто-нибудь сказать мне, действительно ли это С++?
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 ...
}
Если это действительно С++, знает ли кто-нибудь обоснование того, что это является законным?