gcc-help-owner@xxxxxxxxxxx wrote: > Arggg .. C++ is such a mess.. look at this and spot the bug: > > { > flx_mutex_locker_t (*ehd->spawner_lock); > fprintf(stderr,"Thread %p acquired mutex\n", pthread_self()); > *ehd->spawner_flag=true; ehd->spawner_cond->broadcast(); > fprintf(stderr,"Thread %p releasing mutex\n", pthread_self()); } > > This baffled me for 3 days now. The code is legal, it just > doesn't do what I expected. The fix is ONE CHARACTER. This should be diagnosed by -Wunused, IMHO. You are calling a constructor, but ignoring the return value. Let's look at it this way: if you write: 2 + 2; into the program, -Wunused will give you a diagnostic. But if you construct an object and ignore the result, you don't get a diagnostic. What's the difference? The expression 2 + 2 is a constructor for 4.