C ++ RTTI Ejemplos viables [cerrado]

Estoy familiarizado con C ++ RTTI, y el concepto me parece interesante.

Todavía existen muchas más formas de abusar de él que usarlo correctamente (me viene a la mente el temor al interruptor RTTI). Como desarrollador, encontré (y usé) solo dos usos viables para él (más exactamente, uno y medio).

¿Podría compartir algunas de las formas en que RTTI es una solución viable a un problema, con código de ejemplo / seudocódigo incluido?

Nota: El objetivo es tener un repositorio de ejemplos viables que un desarrollador junior pueda consultar, criticar y aprender.

Editar: Encontrará el siguiente código usando C ++ RTTI

// A has a virtual destructor (i.e. is polymorphic)
// B has a virtual destructor (i.e. is polymorphic)
// B does (or does not ... pick your poison) inherits from A

void doSomething(A * a)
{
   // typeid()::name() returns the "name" of the object (not portable)
   std::cout << "a is [" << typeid(*a).name() << "]"<< std::endl ;

   // the dynamic_cast of a pointer to another will return NULL is
   // the conversion is not possible
   if(B * b = dynamic_cast<B *>(a))
   {
      std::cout << "a is b" << std::endl ;
   }
   else
   {
      std::cout << "a is NOT b" << std::endl ;
   }
}

Respuestas a la pregunta(10)

Su respuesta a la pregunta