http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59819
Bug ID: 59819 Summary: -Wunused-value reports incorrect values as unused Product: gcc Version: 4.8.1 Status: UNCONFIRMED Severity: trivial Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: caibbor at gmail dot com Created attachment 31836 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=31836&action=edit The program in full to replicate this bug This is pretty trivial but the warning outputs incorrect information. given the line: int foo = static_cast< int >( 1, 2, 3 ); G++ reports that value 2 and 3 are not used, when in fact 1 and 2 are not used. G++ 4.8.1's output (with -Wall): test.cpp: In function ‘int main()’: test.cpp:15:35: warning: left operand of comma operator has no effect [-Wunused-value] int foo = static_cast< int >( 1, 2, 3 ); ^ test.cpp:15:38: warning: right operand of comma operator has no effect [-Wunused-value] int foo = static_cast< int >( 1, 2, 3 ); ^ Clang 3.2.7 gets it right, however: test.cpp:15:32: warning: expression result unused [-Wunused-value] int foo = static_cast< int >( 1, 2, 3 ); ^ test.cpp:15:35: warning: expression result unused [-Wunused-value] int foo = static_cast< int >( 1, 2, 3 ); ^ 2 warnings generated.