From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21577 invoked by alias); 4 Jan 2003 18:12:25 -0000 Mailing-List: contact gcc-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-owner@gcc.gnu.org Received: (qmail 21569 invoked from network); 4 Jan 2003 18:12:24 -0000 Received: from unknown (HELO mcncgw.mariani.ws) (64.3.144.100) by 209.249.29.67 with SMTP; 4 Jan 2003 18:12:24 -0000 Received: from chaincast.com (IDENT:gianni@bulli.mariani.ws [216.98.238.112]) by mcncgw.mariani.ws (8.11.6/8.11.6) with ESMTP id h04IGhu09725; Sat, 4 Jan 2003 18:16:43 GMT Message-ID: <3E1723FB.5020604@chaincast.com> Date: Sat, 04 Jan 2003 18:36:00 -0000 From: Gianni Mariani Reply-To: gmariani@chaincast.com Organization: Chaincast, Inc User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2a) Gecko/20020910 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Tolga Dalman CC: gcc@gcc.gnu.org Subject: Re: c++ "with" keyword References: <20030104142915.3BD6EF2DF9@nile.gnat.com> <87el7tneoh.fsf@merlin.maxx.bg> <15894.64524.464371.216489@cuddles.cambridge.redhat.com> <3E171A85.8030008@chaincast.com> <20030104182546.50c4d558.ates100@web.de> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-SW-Source: 2003-01/txt/msg00153.txt.bz2 Tolga Dalman wrote: >On Sat, 04 Jan 2003 09:31:50 -0800 Gianni Mariani wrote > > >> >>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. >> >> >> > >it should be possible to disallow a "with" keyword within another "with" block. > > It becomes MUCH less useful if you do this and hence I'll argue that it makes little sense to have a "with" at all. In almost every case where I used the "with" keyword in my distant past, I remember that I was dealing with at least 2 structures and messing with them together. >>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. >> >> >> > >hm, i know a lot of people who don't like namespaces aswell, but the point is: >it'd be great to have a compiler-feature to make code more readable. >i think, long struct-names are very annoying and a common solution >(either standard or compiler-addon) for this problem would be very good. >just my opinion. > > But there is, as has been explained :) { A & y = long_descriptive_expression_I_dont_like_repeating; B & z = long_descriptive_expression_I_dont_like_repeating; z.memberA = z.memberB; z.memberB = y.memberA; } ... Totally unambiguous, very readable, no new syntax - QED. > > >>If you were to implement (heaven forbid) the "with" mechanism, I'd >>suggest you use the "using" keyword instead. >> >> >> > >the actual name doesn't matter i think, but "with" is already used in other programming languages. so, why to use "using"? > sematically similar meaning of the keyword - it's just a suggestion.