¿Cuándo exactamente se destruye temporalmente un inicializador?

oy construí este experimento, después de responder alguna pregunt

struct A { 
  bool &b; 
  A(bool &b):b(b) { } 
  ~A() { std::cout << b; }  
  bool yield() { return true; } 
}; 

bool b = A(b).yield();

int main() { }

b tiene valorfalse (resultante de la inicialización cero) antes de configurarlo entrue por la inicialización dinámica. Si el temporal se destruye antes de la inicialización deb terminado, imprimiremosfalse, de lo contrariotrue.

La especificación dice que el temporal se destruye al final de la expresión completa. Eso no parece estar ordenado con la inicialización deb. Entonces me pregunto

¿La especificación permite que una implementación imprima tantofalse ytrue en diferentes carreras?

Clang imprimefalse para lo anterior, mientras que GCC imprimetrue. Esto me confunde ¿Me perdí algún texto de especificación que define el orden?

Respuestas a la pregunta(3)

Su respuesta a la pregunta