|
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
|