C++ contains a syntactical shorthand for simultaneously declaring a variable and branching on its value. if (MouseEvent *mouse = dynamic_cast (event)) I think it is a complicated description and a complicated example for saying that the assignment operator (=) returns the value that was assigned.
if (mouse = dynamic_cast(event))
then it would indeed just be an if condition expression that happened to be an assignment.But the variable is being declared as well, so what's actually going on here is a declaration and an initialiser expression. There is actually new functionality here that needed a bit of language design thought, e.g., the declared variable's scope is the whole if statement, not just the condition expression.