On Wed, 29 Jul 2009 14:50:42 -0400, Ary Borenszweig <a...@esperanto.org.ar> wrote:

Steven Schveighoffer wrote:
On Wed, 29 Jul 2009 14:39:07 -0400, Ary Borenszweig <a...@esperanto.org.ar> wrote:

a.b.c = d;

If b is anything that has a struct type, and c is anything else, the statement must report an error.
 struct S
{
  int *x;
  void c(int n) {*x = n;}
}
 struct S2
{
  int n;
  S b() { return S(&n);}
}
 void main()
{
  S2 a;
  a.b.c = 5;
}
 Why should this not be allowed?

Because in the general case it might not work.

It's simple: if you disallow it, no bugs caused because of this can exist. If you don't disallow it, sometimes it might work, sometimes it won't work. Which option do you prefer as a programmer?

I prefer to have the power to create whatever I want without the compiler telling me incorrectly that it won't work.

why allow any programming at all? The programmer might write incorrect code!

-Steve

Reply via email to