------- Comment #4 from kkylheku at gmail dot com 2009-12-11 02:34 -------
(In reply to comment #3)
> This would have prevented bugs I've dealt with where critical sections where
> not protected:
> {
> lock_guard (mutex);
> // mutex NOT locked here!
> }
> But I'm not convinced that doing this is always a mistake.
Since we don't care about the object, we must care about the constructor side
effect. I seem to be under the impression that ISO C++ allows the construction
of temporary objects to be optimized away---even if there are side effects in
the constructor or destructor! Therefore, it's hard to see a valid use case for
this.
Would the warning be
> suppressed by casting to void?
> (void) TypeWithSideEffectsInCtor(x);
Not as implemented, I am afraid. The diagnostic is still produced that the
object is discarded. This is can be regarded as a flaw; something explicitly
requested by a cast should not be diagnosed.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36587