Archives
D Programming
DD.gnu digitalmars.D digitalmars.D.bugs digitalmars.D.dtl digitalmars.D.dwt digitalmars.D.announce digitalmars.D.learn digitalmars.D.debugger C/C++ Programming
c++c++.announce c++.atl c++.beta c++.chat c++.command-line c++.dos c++.dos.16-bits c++.dos.32-bits c++.idde c++.mfc c++.rtl c++.stl c++.stl.hp c++.stl.port c++.stl.sgi c++.stlsoft c++.windows c++.windows.16-bits c++.windows.32-bits c++.wxwindows digitalmars.empire digitalmars.DMDScript |
c++ - Name lookup: default arguments
struct A { A(int i = val) // Error: undefined identifier 'val' { } static const int val = 0; }; int main() { A a; return 0; } See 3.3.6 Class scope [basic.scope.class], paragraph 1, of the C++ standard. Also see 8.3.6 Default arguments [dcl.fct.default], paragraph 9, of the C++ standard for another example. It's rather low priority, but it can be annoying if incorrect code is generated instead of an error, e.g.: #include <stdio.h> struct A { static const int val = 1; }; struct B : public A { B(int i = val) { printf("%d\n", i); } static const int val = 0; }; int main() { B b; return 0; } When compiled with DMC, the program prints "1" instead of "0". bye, Christof -- http://cmeerw.org JID: cmeerw jabber.at mailto cmeerw at web.de ...and what have you contributed to the Net? Dec 31 2002
|