comp.lang.ada
 help / color / mirror / Atom feed
From: Matthew Heaney <mheaney@on2.com>
Subject: Re: Containers - nontrivial element access
Date: Wed, 03 Oct 2007 12:09:30 -0700
Date: 2007-10-03T12:09:30-07:00	[thread overview]
Message-ID: <1191438570.552084.264990@r29g2000hsg.googlegroups.com> (raw)
In-Reply-To: <qvRMi.133522$Fc.79348@attbi_s21>

On Oct 3, 2:49 pm, "Jeffrey R. Carter"
<spam.jrcarter....@acm.nospam.org> wrote:
>
> People.Element (X).Salary := S;
>
> and have it modify the value in the data structure.
>
> C++ uses reference semantics,

No, C++ has explicit reference types.  Ada of course has "reference
semantics" too, for composite types (at the discretion of the
implementation), for tagged types, and for limited types that are
"inherently" limited.

The C++ STL declares the index operator to return a reference to the
element:

   value_type& operator[](size_type);
   const value_type& operator[](size_type) const;

Of course, the C++ has by-value passing too.  The C++ STL uses by-
value passing for some of its operations, e.g.

   iterator operator++(int);  //post-fix form of inc operator

In fact, any arithmetic operator would have to return its result by-
value.


> so that a modification of a field modifies
> the value in the data structure. Ada uses value semantics,

Ada has both value semantics and reference semantics.  The language
specifies value semantics for some parameter classes (scalar or access
values) and reference semantics for others (tagged, limited, etc).


> so that
> modification of a field does not modify the value in the data structure.

But reference passing mechanism is completely orthogonal to the issue
being able to modify --in situ-- the container element.




  reply	other threads:[~2007-10-03 19:09 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-10-01 21:55 Containers - nontrivial element access Maciej Sobczak
2007-10-01 23:52 ` Alex R. Mosteo
2007-10-02 16:40   ` Matthew Heaney
2007-10-02 23:16     ` Alex R. Mosteo
2007-10-02 20:47   ` Maciej Sobczak
2007-10-02 23:23     ` Alex R. Mosteo
2007-10-02  0:39 ` Jeffrey R. Carter
2007-10-02 16:44   ` Matthew Heaney
2007-10-03  0:20     ` Jeffrey R. Carter
2007-10-03 19:40       ` Maciej Sobczak
2007-10-03 19:56         ` Matthew Heaney
2007-10-03 20:21           ` Dmitry A. Kazakov
2007-10-03 22:37             ` Matthew Heaney
2007-10-04  8:06               ` Dmitry A. Kazakov
2007-10-03 22:02         ` Jeffrey R. Carter
2007-10-04  0:16         ` Robert A Duff
2007-10-07  8:41           ` Jacob Sparre Andersen
2007-10-11 19:15             ` Robert A Duff
2007-10-14  4:59               ` Jacob Sparre Andersen
2007-10-14  7:24                 ` Dmitry A. Kazakov
2007-10-14 13:49                   ` Georg Bauhaus
2007-10-14 15:07                     ` Dmitry A. Kazakov
2007-10-02 20:50   ` Maciej Sobczak
2007-10-03  0:22     ` Jeffrey R. Carter
2007-10-03  8:26       ` Dmitry A. Kazakov
2007-10-03 18:49         ` Jeffrey R. Carter
2007-10-03 19:09           ` Matthew Heaney [this message]
2007-10-03 19:15           ` Simon Wright
2007-10-03 19:48             ` Maciej Sobczak
2007-10-03 19:58             ` Matthew Heaney
2007-10-03 19:35           ` Dmitry A. Kazakov
2007-10-02  2:34 ` Randy Brukardt
2007-10-02 16:47   ` Matthew Heaney
2007-10-02  7:23 ` Dmitry A. Kazakov
2007-10-02 16:37 ` Matthew Heaney
2007-10-02 21:02   ` Maciej Sobczak
2007-10-02 22:20     ` Matthew Heaney
2007-10-03 19:59       ` Maciej Sobczak
2007-10-03 22:55         ` Matthew Heaney
2007-10-04  0:22         ` Robert A Duff
2007-10-04 13:01         ` Georg Bauhaus
2007-10-04 14:01           ` Matthew Heaney
2007-10-04 21:58           ` Matthew Heaney
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox