pergunta boost :: shared_ptr. Por que isso funciona?

Ao experimentar comessa questão Criei um exemplo que não entendo totalmente. Em particular, destaca meu mal-entendido sobre ponteiros, referências e o boost :: shared_ptr.

int& r = *(new int(0));//gratuitous pointer leak, got to initialize it to something
{
    boost::shared_ptr<int> sp(new int(100));
    r = *sp;
    cout << "r=" << r << endl;
}
cout << "r=" << r << endl << endl;

int* p;
{
    boost::shared_ptr<int> sp(new int(100));
    p = &*sp;
    cout << "*p=" << *p << endl;
}
cout << "*p=" << *p << endl;

A execução desse código fornece uma saída semelhante a esta:

r=100
r=100

*p=100
*p=13

Por que a referência sobrevive à morte do shared_ptr, mas o ponteiro não?

Há um problema nas respostas aqui em que parece haver duas soluções diametralmente opostas e contraditórias e nenhum consenso sobre qual é a verdade. Gostaria da capacidade de usar uma referência depois que um shared_ptr for excluído, mas se for inválido, realmente preciso entender isso.

Talvez alguém possa postar um exemplo simples que demonstre o comportamento indefinido na referência.

questionAnswers(3)

yourAnswerToTheQuestion