comp.lang.ada
 help / color / mirror / Atom feed
From: "Peter C. Chapin" <pcc482719@gmail.com>
Subject: Re: Sharing generic bodies across instantiations.
Date: Wed, 28 Jul 2010 07:27:33 -0400
Date: 2010-07-28T07:27:33-04:00	[thread overview]
Message-ID: <4c501408$0$2382$4d3efbfe@news.sover.net> (raw)
In-Reply-To: <7da1e21f-bec7-4607-923c-0fd6cbcfc753@t10g2000yqg.googlegroups.com>

On 2010-07-28 03:59, Maciej Sobczak wrote:

> To be honest I'm not sure why you came up with such an idea.
> Formally, the C++ standard places no restrictions on how this should
> be done.

I understand that there is no statement in the C++ standard that says
template bodies can't be shared. My assumption has been that such a
conclusion follows indirectly from the other requirements.

I admit that I'm not a C++ implementer but I know that in general C++
imposes few restrictions on the way names in templates are used. Since
those names can be dependent on template parameters there would be a
large number of corner cases to support that might make a shared
implementation model "unreasonably" difficult. For example

template< typename T >
void f(const T &object)
{
  typename T::helper internal;
  ...
}

Here T::helper might be a class or a typedef. Depending on what it is a
wide variety of uses are possible. Dealing with all of these variations
in a shared implementation model would be quite a burden on the
compiler, it seems like. It might not be theoretically impossible but it
might be practically infeasible. There could well be other corner cases
I'm not seeing right now... that is the 'nature' of C++ of which I spoke.

I realize that implementing the shared model in Ada would be hard as
well, but Ada constrains much more the way names in generic bodies can
be used. I speculate that those limitations make implementing the shared
model in Ada easier and, in particular, easy enough to be feasible and
useful. Is that actually true? That's the essence of my original question.

> But, for the sake of exercise, think about a C++ *interpreter*.

That seems like a different situation to me. A pure interpreter executes
code only as needed and only when needed. Without a compilation step
isn't the question of shared or replicated bodies meaningless?
Everything is shared... or maybe everything is replicated... it would
depend on how one defined one's terms.

Peter



  parent reply	other threads:[~2010-07-28 11:27 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-07-27  0:51 Sharing generic bodies across instantiations Peter C. Chapin
2010-07-27  3:01 ` Gene
2010-07-27  6:55 ` AdaMagica
2010-07-27 11:29   ` Ludovic Brenta
2010-07-27 14:10     ` Tero Koskinen
2010-07-27 10:51 ` Martin
2010-07-27 20:06 ` anon
2010-07-27 22:23   ` Peter C. Chapin
2010-07-28  7:59     ` Maciej Sobczak
2010-07-28  9:28       ` Dmitry A. Kazakov
2010-07-28 12:55         ` Maciej Sobczak
2010-07-28 13:16           ` Dmitry A. Kazakov
2010-07-28 19:48             ` Maciej Sobczak
2010-07-29  8:03               ` Dmitry A. Kazakov
2010-07-29 14:02                 ` Maciej Sobczak
2010-07-29 14:40                   ` Dmitry A. Kazakov
2010-07-29 20:27                     ` Maciej Sobczak
2010-07-30  9:09                       ` Dmitry A. Kazakov
2010-07-30 12:31                         ` Maciej Sobczak
2010-07-30 14:59                           ` Dmitry A. Kazakov
2010-08-03  3:02                           ` Randy Brukardt
2010-08-03 14:37                             ` Robert A Duff
2010-08-03  2:47                         ` Randy Brukardt
2010-07-28 20:01             ` Keith Thompson
2010-07-29  7:46               ` Dmitry A. Kazakov
2010-07-28 11:27       ` Peter C. Chapin [this message]
2010-07-28 13:10         ` Maciej Sobczak
2010-07-28 16:32           ` Peter C. Chapin
2010-07-28 19:30             ` Robert A Duff
2010-07-28 20:03             ` Maciej Sobczak
2010-07-28 11:47     ` anon
2010-08-03  2:38     ` Randy Brukardt
2010-08-03 14:31       ` Robert A Duff
2010-07-28  0:55   ` Keith Thompson
2010-07-28  8:42     ` Markus Schoepflin
2010-07-28 11:16     ` anon
replies disabled

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