title: Real world example of dynamic_cast in C++
body: <p>Can anybody give me a real world example of a case when dynamic_cast is needed and can't be worked around at all? Examples I can think of can generally be worked around with double dispatch.</p>
  
  <p>If the constraint is too strong, an example where dynamic_cast is generally the way to go would also be nice.</p>
  
  <p>I'd like to see real examples instead of "it's normally used to cast between types up and down a type tree".</p>