Go forward to Routines.
Go backward to Top.
Go up to Top.
Limitations of g++
==================
* Limitations on input source code: 240 nesting levels with the
parser stacksize (YYSTACKSIZE) set to 500 (the default), and
requires around 16.4k swap space per nesting level. The parser
needs about 2.09 * number of nesting levels worth of stackspace.
* I suspect there are other uses of pushdecl_class_level that do not
call set_identifier_type_value in tandem with the call to
pushdecl_class_level. It would seem to be an omission.
* Access checking is unimplemented for nested types.
* `volatile' is not implemented in general.
* Pointers to members are only minimally supported, and there are
places where the grammar doesn't even properly accept them yet.
* `this' will be wrong in virtual members functions defined in a
virtual base class, when they are overridden in a derived class,
when called via a non-left most object.
An example would be:
extern "C" int printf(const char*, ...);
struct A { virtual void f() { } };
struct B : virtual A { int b; B() : b(0) {} void f() { b++; } };
struct C : B {};
struct D : B {};
struct E : C, D {};
int main()
{
E e;
C& c = e; D& d = e;
c.f(); d.f();
printf ("C::b = %d, D::b = %d\n", e.C::b, e.D::b);
return 0;
}
This will print out 2, 0, instead of 1,1.