https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80026
Eric Gallager <egallager at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2017-09-29 CC| |egallager at gcc dot gnu.org Known to work| |4.4.7 Ever confirmed|0 |1 Known to fail| |4.0.1, 4.2.1, 4.6.4, 7.0, | |8.0 --- Comment #1 from Eric Gallager <egallager at gcc dot gnu.org> --- Confirmed that the message is as you say with current gcc: $ /usr/local/bin/g++ -c -Wall -Wextra -pedantic 80026.cc 80026.cc: In function ‘int main()’: 80026.cc:8:6: error: too many arguments to function ‘void f(S ...) [with S = {}]’ f(&g); ^ 80026.cc:5:6: note: declared here void f(S...){} ^ $ With a really old gcc such as 4.2.1 the message is also bad: $ /usr/bin/g++-4.2 -c -Wall -Wextra -pedantic 80026.cc 80026.cc:4: error: expected identifier before ‘...’ token 80026.cc:4: error: expected ‘>’ before ‘...’ token 80026.cc:5: error: variable or field ‘f’ declared void 80026.cc:5: error: ‘S’ was not declared in this scope 80026.cc: In function ‘int main()’: 80026.cc:8: error: ‘f’ was not declared in this scope $ ...so I'm not sure when exactly the message started being the "good" one seen with 4.4.7.