The attached patch adds a -Wunused-value warning when an expression with side effects is used in an unevaluated expression context, such as sizeof(), or decltype(). It mostly reuses the logic from Expr::HasSideEffects, except with a flag that treats certain expressions as not having side effects -- mostly instantiation-dependent contexts, and function call-like operations.
int f(); int j = 0; (void)sizeof(f()); // Ok (void)sizeof(++j); // Warn (void)sizeof(int[++j]); // Ok I've added support for: sizeof, typeid, _Generic, _Alignof, noexcept, and decltype. ~Aaron
UnevaluatedExpr.patch
Description: Binary data
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
