------- 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