🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.std.c++
Article #1833

Semantics operator->()

#1833
From: Douglas C. Schmidt
Date: Thu, 24 Aug 1995 03:56
59 lines
1984 bytes
Hi,

	I've got a question about the behavior of operator->(), in
particular, can it return a pointer to a builtin type?

	For example, consider the following:
	
----------------------------------------
#include <stdio.h>

class Foo
{
public:
  Foo (int i): i_ (i) {}

  int *operator->()
  {
    return &this->i_;
  }

private:
  int i_;
};

int main ()
{
  Foo foo (10);
  printf ("%d, ", ++*(int *) foo.operator->());
  printf ("%d\n", ++*(int *) foo.operator->());
  // prints "11, 12"
  return 0;
}
----------------------------------------

	When I compile this with gcc it compiles and runs fine.
However, when I use SunC++ 4.0.1 I get the following error:

----------------------------------------
% CC foo.C
"foo.C", line 9: Error: Cannot have a return type of int* for Foo::operator->().
1 Error(s) detected.
----------------------------------------

	I tried to find a discussion of this in the ARM, but couldn't
find it discussed there.  Can someone please tell me if this is legal
in the draft ANSI/ISO C++ standard?

	Thanks,
	
		Doug
-- 
Dr. Douglas C. Schmidt 			(schmidt@cs.wustl.edu)
Department of Computer Science, Washington University
St. Louis, MO 63130. Work #: (314) 935-7538; FAX #: (314) 935-7302
http://www.cs.wustl.edu/~schmidt/

[ comp.std.c++ is moderated.  Submission address: std-c++@ncar.ucar.edu.
  Contact address: std-c++-request@ncar.ucar.edu.  The moderation policy
  is summarized in http://dogbert.lbl.gov/~matt/std-c++/policy.html. ]
Technical Details
Message-ID: <41gq8b$1jm@tango.cs.wustl.edu>
Path: arc1-ca.pugleaf.net!engnews2.Eng.Sun.COM!taumet!clamage

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!engnews2.Eng.Sun.COM!taumet!clamage
From: schmidt@cs.wustl.edu (Douglas C. Schmidt)
Newsgroups: comp.std.c++
Subject: Semantics operator->()
Date: 24 Aug 1995 03:56:23 GMT
Organization: Computer Science Department, Washington University.
Approved: clamage@eng.sun.com (comp.std.c++)
Message-ID: <41gq8b$1jm@tango.cs.wustl.edu>
NNTP-Posting-Host: taumet.eng.sun.com
Content-Type: text
Content-Length: 1255
Originator: clamage@taumet