I'm not a professional programmer by any stretch, but wouldn't this problem completely go away if the C and C++ compilers detect a single = inside an if statement and outright refuse it. Either that or automatically substitute the assignment with checking for instances inside the if-condition.
The reason I'm asking is, because I don't know if there's ever a case where you'd want to assign right inside the if-condition. Is there?