Created attachment 31836 [details] 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.