que espera que este código para imprimir 'mismos 1' y 'Same2', pero sólo se imprime 'Same1':typeid de tipos polimórficos
#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 y § 5.3. 1/3 parece sugerirme que se debe imprimir 'Same2'.
¿Qué y dónde está la captura?
Quizás quiso decir 'C c, * cr1 = & d'? –
@dark_charlie: Eso es básicamente mover el operador de la dirección de dos líneas hacia arriba. Obtendrá el mismo resultado, incluso si escribió 'typeid ((C *) & d)'. – MSalters
@MSalters: Ah, nvm mí, simplemente no puedo leer. –