This if is a little funny ... [ perhaps I haven't understood it completely ]
First of all the '&& !updated' only saves to execute 'updated = true', but it adds the comparison, which is heavier to execute.
So, the code gets harder to read and slower ,,, 
I would remove the '&&' part.

And, why not send in '&updated' instead of '&attrActualUpdate' directly (and forget about the 'if')? : 

        checkAndUpdate(&newAttr, i.next().embeddedObject(), *caP, &updated)