Jaki jest czas życia domyślnego argumentu tymczasowo związanego z parametrem odniesienia?
Pomyślałem, że odniesienia przedłużają tylko czas życia tymczasowych do czasu życia samego odniesienia, ale wynik poniższego fragmentu wydaje się sprzeczny:
#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());
}
Przykład na żywo. Wydajność:
Inside f()
Inside g()
Goodbye, cruel world!
Wygląda więc na to, że tymczasowy został zniszczony pog()
nazywa się ... co daje?