ho pensato riferimenti riguardano unicamente la durata di provvisori per la durata del riferimento stesso, ma l'uscita del seguente frammento sembra contraddittoria:Qual è la durata di un argomento predefinito temporaneamente associato a un parametro di riferimento?
#include <iostream>
struct X{ ~X(){ std::cout << "Goodbye, cruel world!\n"; } };
X const& f(X const& x = X()){
std::cout << "Inside f()\n";
return x;
}
void g(X const& x){
std::cout << "Inside g()\n";
}
int main(){
g(f());
}
Live example. uscita:
Inside f()
Inside g()
Goodbye, cruel world!
così sembra la temporaneo viene distrutto dopo che g()
viene chiamato ... cosa dà?
E 'normalmente considerato ostile per non lasciare una spiegazione quando downvoting. – Xeo
La mia ipotesi è che il downvoter colpisca accidentalmente il pulsante downvote quando in realtà volevano premere il pulsante di upvote (guardando i voti totali per la risposta e la domanda supporta anche questa teoria). Ma chi lo sa! –
@Jesse: Bella teoria, ma la risposta ha avuto più uptotes rispetto alla domanda prima che arrivasse il downvote. :) – Xeo