This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: c++ "with" keyword


Andrew Haley wrote:

Momchil Velikov writes:
> >>>>> "Robert" == Robert Dewar <dewar@gnat.com> writes:
> > Robert> If you think "with" is valuable, then the task is to
> Robert> convince the guardians of the C++ standard of this. If
> Robert> you can't convince the
> > Not related to this particular "with" discussion, but I couldn't
> disagree more. A standards body should not invent language
> "features", but rather codify existing (proven) extensions.

I totally agree. A standards should not invent language features, or
-- heaven forbid -- programming languages. The reason for this is
pretty obvious, in that once a feature is standardized it's too late
to remove it if it has some fatal flaw.

I agree as well.

Proposals of language extensions should come from anyone :) The metrits discussed in community and accepted as a standard once it is generally accepted.

So, I'd like to steer the discussion back to the merits of "with".

The "with" syntax was a pain in the rear in Pascal and I never want to see it again - this is why:

Take 2 structures, A and B which are both used in a "with" statement.

e.g. (I'll use the proposed new "with" syntax in c++ below)

Let's start with some valid working code ...

struct A {
int X;
int Y;
int hUgH;
};

struct B {
int Z;
};

int func()
{
....
A & a;
B & b;
....

with ( a )
witb ( b )
{

Y = Z;
hUgH = X; // woz this then eh ? <-- point of confusion
}
...
}

And a little later someone comes and fixes a bug and adds

struct B {
int Z;
int X; // need an X to fix The Bug (tm)
};

Oops - which X is now instantiated at "point of confusion" ?

Someone innocently added a new member and completly changed the behaviour of the code. For code maintainability, I'd suggest that this would cause more difficult to discover problems than would be merited.

This is also one of the reasons I don't like namespaces much either - hence I allways prefix identifiers that are not within a class's scope.

If you were to implement (heaven forbid) the "with" mechanism, I'd suggest you use the "using" keyword instead.

G



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]