Qualcuno può verificare che quanto segue sia un bug e spiegare perché? Penso di saperlo, ma non sono chiaro sui dettagli. (Il mio vero problema ha coinvolto un vettore di enumerazioni, non interi, ma non credo che dovrebbe importa.) Supponiamo che io ho il seguente codice:Riferimento all'elemento di vettore restituito da una funzione in C++
std::vector<int> f (void) {
std::vector<int> v;
v.push_back(5);
return v;
}
void g (void) {
const int &myIntRef = f()[0];
std::cout << myIntRef << std::endl;
}
Sono corretto che myIntRef è subito un punto di riferimento penzoloni, perché il valore di ritorno di f viene salvato da nessuna parte nello stack?
Inoltre, la seguente è una correzione valida oppure è ancora un bug?
const int myIntCopy = f()[0]; // copy, not a reference
In altre parole, è il risultato di ritorno di f() buttato via prima l'elemento 0a possono essere copiati?
Sono solo curioso, ma c'è qualche ragione per usare un 'int const &' invece di un 'int' come variabile locale? –
@JamesKanze: Forse per contrassegnare la variabile come 'const'? –