Мне интересно об этом из-за проблем с областью. Например, рассмотрим код
typedef struct {
int x1;/*top*/
int x2;/*bottom*/
int id;
} subline_t;
subline_t subline(int x1, int x2, int id) {
subline_t t = { x1, x2, id };
return t;
}
int main(){
subline_t line = subline(0,0,0); //is line garbage or isn't it? the reference
//to subline_t t goes out of scope, so the only way this wouldn't be garbage
//is if return copies
}
Итак, мой вопрос: всегда ли будет возвращать оператор return? В этом случае это работает, поэтому я убежден, что возвращение копирует. Если он копирует, будет ли он копироваться в каждом случае?