Quando exatamente um inicializador é temporariamente destruído?

Eu construí esse experimento hoje, depois de responder a uma pergunta

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 tem valorfalse (resultante da inicialização zero) antes de defini-lo comotrue pela inicialização dinâmica. Se o temporário for destruído antes da inicialização deb terminado, imprimiremosfalse, de outra formatrue.

A especificação diz que o temporário é destruído no final da expressão completa. Isso não parece ser solicitado com a inicialização deb. Então eu me pergun

A especificação permite que uma implementação imprima ambosfalse etrue em diferentes corridas?

Clang printsfalse acima, enquanto o GCC imprimetrue. Isso me confunde. Perdi algum texto de especificação que define o pedido?