typeid para tipos polimórficos

Esperaba que este código imprimiera 'Mismo 1'y 'Same2', pero solo imprime 'Same1':

#include <iostream>
#include <typeinfo>
using namespace std;

struct C{virtual ~C(){}};
struct D : C{};
int main(){
   D d;
   C c, &cr1 = d;
   if(typeid(cr1) == typeid(D)) cout << "Same1";
   if(typeid(&cr1) == typeid(D*)) cout << "Same2";
}

Tanto §5.2.8 / 2 como §5.3.1 / 3 parecen sugerirme que 'Same2' debería imprimirse.

¿Qué y dónde está la trampa?

Respuestas a la pregunta(1)

Su respuesta a la pregunta