When would you want to assign a variable in an if condition? [duplicate]

if (Derived* derived = dynamic_cast<Derived*>(base)) {
   // do stuff with `derived`

Though this is oft cited as an anti-pattern (“use virtual dispatch!”), sometimes the Derived type has functionality that the Base simply does not (and, consequently, distinct functions), and this is a good way to switch on that semantic difference.

Leave a Comment