8.3.6/4 dcl.fct.default: "For non-template functions, default arguments can be added in later declarations of a function in the same scope." (there's a detailed example).
gcc 3.4.0 compiled the following code with no problem but release 4.1.1 rejects it (with or without the -ansi and -pedantic flags btw), with: [EMAIL PROTECTED]:~/c++$ g++ -ansi -pedantic x.c x.c:5: error: default argument missing for parameter 2 of 'int f(int, int)' x.c:5: error: default argument given for parameter 2 of 'int f(int, int)' x.c:1: error: after previous specification in 'int f(int, int)' [EMAIL PROTECTED]:~/c++$ cat x.c int f (int a, int b = 1) { return a + b; } int f(int a = 6, int b); // can add default arguments - 8.3.6/4 page 142 [EMAIL PROTECTED]:~/c++$ [EMAIL PROTECTED]:~/c++$ gcc -v Using built-in specs. Target: i686-pc-linux-gnu Configured with: /home/sjh/gcc/gcc-4.1.1/configure --prefix=/home/sjh/gcc/prefix/ --enable-languages=c,c++ Thread model: posix gcc version 4.1.1 [EMAIL PROTECTED]:~/c++$ -- Summary: Wrongly rejects non-template function default arguments in later declarations Product: gcc Version: 4.1.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: greifel at megatop200 dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29177