Esempio
int getNum(){
return 5;
}

void main( int argc, char* argv[]) {
while( a = getNum() ) {
cout << "A is still 5";
}
}

Soluzione
Se l'assegnazione è un errore, modificarla in modo che sia un confronto. In caso contrario, eseguire l'assegnazione all'esterno dell'istruzione condizionale.
int getNum(){
return 5;
}

void main( int argc, char* argv[]) {
int a = 5;
while( a == getNum() ) {
cout << 
"A is still 5";
}
}