> > The language syntax would bind the conditional into the intializer, as in > > if (varpool_node *vnode = (node->try_variable () > && vnode->finalized)) > varpool_analyze_node (vnode); > > which does not type-match. > > So, if you want the type saftey and performance, the cascade is really > unavoidable.
Just write: varpool_node *vnode; if ((vnode = node->try_variable ()) && vnode->finalized) varpool_analyze_node (vnode); This has been the standard style for the past 2 decades and trading it for cascading if's is really a bad idea. -- Eric Botcazou