Каково время жизни аргумента по умолчанию, временно связанного со ссылочным параметром?

Я думал, что ссылки только увеличивают время жизни временных ссылок на время жизни самой ссылки, но вывод следующего фрагмента кажется противоречивым:

#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());
}

Живой пример. Выход:

Inside f()
Inside g()
Goodbye, cruel world!

Так что, кажется, временный разрушен послеg() называется ... что дает?

Ответы на вопрос(2)

Ваш ответ на вопрос