www.digitalmars.com         C & C++   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