From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM autolearn=ham autolearn_force=no version=3.4.4 X-Google-Thread: 103376,c406e0c4a6eb74ed X-Google-Attributes: gid103376,public X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!news1.google.com!news.glorb.com!border1.nntp.dca.giganews.com!nntp.giganews.com!newshosting.com!nx01.iad01.newshosting.com!uunet!ash.uu.net!spool.news.uu.net!not-for-mail Date: Thu, 02 Sep 2004 09:33:26 -0400 From: Hyman Rosen User-Agent: Mozilla Thunderbird 0.7.3 (Windows/20040803) X-Accept-Language: en-us, en MIME-Version: 1.0 Newsgroups: comp.lang.ada Subject: Re: ADA Popularity Discussion Request References: <49dc98cf.0408110556.18ae7df@posting.google.com> <1198227.gWQ0keDDOY@linux1.krischik.com> <1093956169.632925@master.nyc.kbcfp.com> <4ic2hc.1q.ln@skymaster> <1093983432.462543@master.nyc.kbcfp.com> <1195965.KqRhyO6tpe@linux1.krischik.com> In-Reply-To: <1195965.KqRhyO6tpe@linux1.krischik.com> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Organization: KBC Financial Products Message-ID: <1094132006.886791@master.nyc.kbcfp.com> Cache-Post-Path: master.nyc.kbcfp.com!unknown@nightcrawler.nyc.kbcfp.com X-Cache: nntpcache 3.0.1 (see http://www.nntpcache.org/) NNTP-Posting-Host: 204.253.250.10 X-Trace: 1094132006 29144 204.253.250.10 Xref: g2news1.google.com comp.lang.ada:3257 Date: 2004-09-02T09:33:26-04:00 List-Id: Martin Krischik wrote: > But that is only a syntax -hack for lazy typers. The so called "local" > classes are actualy global classes with special naming convention - usualy > invoving a "$" in the middle of the name. This discussion started when JPR said However, all other OO languages (that I know of) require *all* classes to be declared at library level. This is demonstrably untrue (unless JPR knows of neither C++ nor Java); Java and C++ do allow classes to be declared other than at library level, including inside functions. Neither C++ nor Java has Pascal-like block structure, so these local classes interact more weakly with their declaration environment than would be the case otherwise, but they are nevertheless locally declared. Because of this weaker interaction, types in C++ and Java do not have or need a lifetime, so they are global in that sense, but not in a name lookup sense. In C++, I can do void f() { static int x; struct c { int f() { return x; } }; }