First of all let me mention the fact that I do NOT have a copy of the standards document with me. There, now that its out of the way; here goes...
My understanding is that the trailing N parameters can be defaulted. the following code shows how some trailing params are defaulted in the function declaration; but more of them are defaulted in the definition! // start program //#include <iostream> void f( int i, int j=0 ); void blah( void ); int main( void ) { f( 4, 5 ); // if this is f() the program won't compile blah(); return 0; } void f( int i=0, int j ) { // std::cout << "i -> " << i << " j -> " << j << std::endl; } void blah( void ) { f(); } // end program The above simple program illustrates what I have mentioned earlier. The code compiles fine with this cmdline: g++ func.cpp -o func Some people have reported that it compiles and runs fine with gcc 3.4.x as well. Although rare, it is possible to observe such code huge projects. If its within the standards, please ignore. -- Imran ps: where do i attach the stuff generated by 'gcc -v -save-temps all-your-options source-file' as mentioned in the 'how to post bugs in gcc' document? -- Summary: g++ is allowing defaulted parameters in function definition in a weird way Product: gcc Version: 3.3.2 Status: UNCONFIRMED Severity: normal Priority: P2 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: imran at esscc dot uq dot edu dot au CC: gcc-bugs at gcc dot gnu dot org GCC build triplet: 3.3.2 GCC host triplet: 3.3.2 GCC target triplet: 3.3.2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18670