🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: gnu.g++.bug
Article #2203

Re: g++ 1.36.3 bug

#2203
From: Piercarlo Grandi
Date: Thu, 22 Feb 1990 13:42
43 lines
2685 bytes
In article <25E0AC9A.28299@paris.ics.uci.edu> rfg@ics.uci.edu (Ronald Guilmette) writes:
  
  There seem to be a lot of problems with the implementation of "const"
  functions both in cfront (2.0) and in g++ (1.36.1).

Do away with member functions entirely! (my pet peeve, as rfg knows :->).
The problem is not with the implementation; it is with the contortions
you need to get through to handle the 'hidden' this parameter. For the
millionth time, let me say that if functions whose first parameter were
a reference or pointer to a class object could be called in infix
notation, all this, and a good many other problems, would be drastically
simplified.
  
  	#1) It makes absolutely no semantic sense to allow global (i.e.
  	    non-member) functions to be declared as `const', and yet both
  	    cfront and g++ allow such function to be defined.

One of the many quirks of building a language as a collection of special
cases.. Are you sure that the famous ugly red book allows only member
functions to be const? Maybe there is a reserve such as 'global const
means no side effects'. Bohhhhhh.
  
  	#2) If two otherwise identical forms of a global function with a
  	    given name are defined (with one being `const' and one not)
  	    g++ at least gives an error for conflicting definitions.  cfront
  	    says nothing.

Bleech.
  
  	#3) If two otherwise identical member functions (or operators) with the
  	    same "designator" are declared and defined for a given class
  	    (with one being const and the other one not) neither g++ nor
  	    cfront seem to mind  (although one could argue that they should).
  	    There is some sense in which this could be considered a legal
  	    overloading based upon the consness or non-constness of the
  	    implicit `this' parameter.

As far as I remember from the Primer, this is indeed the case in C++ 2.0;
it is even encouraged programming practice.
-- 
Piercarlo "Peter" Grandi           | ARPA: pcg%cs.aber.ac.uk@nsfnet-relay.ac.uk
Dept of CS, UCW Aberystwyth        | UUCP: ...!mcvax!ukc!aber-cs!pcg
Penglais, Aberystwyth SY23 3BZ, UK | INET: pcg@cs.aber.ac.uk
Technical Details
Message-ID: <1657@aber-cs.UUCP>
Path: arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!cs.utexas.edu!uunet!mcsun!ukc!dcl-cs!aber-cs!pcg

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!cs.utexas.edu!uunet!mcsun!ukc!dcl-cs!aber-cs!pcg
From: pcg@aber-cs.UUCP (Piercarlo Grandi)
Newsgroups: gnu.g++.bug,comp.lang.c++
Subject: Re: g++ 1.36.3 bug
Summary: Member functions? NO THANKS! :-)
Message-ID: <1657@aber-cs.UUCP>
Date: 22 Feb 90 13:42:25 GMT
Reply-To: pcg@cs.aber.ac.uk (Piercarlo Grandi)
Followup-To: comp.lang.c++
Distribution: gnu
Organization: Dept of CS, UCW Aberystwyth
 (Disclaimer: my statements are purely personal)
Lines: 43