comp.lang.ada
 help / color / mirror / Atom feed
From: Jean-Marc Bourguet <jbourguet@free.fr>
Subject: Re: Compile time executed functions
Date: Sun, 01 Apr 2001 08:59:21 GMT
Date: 2001-04-01T08:59:21+00:00	[thread overview]
Message-ID: <3AC6ED5F.9F2F51A5@free.fr> (raw)
In-Reply-To: tfqx6.563$wL.137886776@newssvr16.news.prodigy.com

Ken Garlington wrote:
> 
> "Jean-Marc Bourguet" <jbourguet@free.fr> wrote in message
> news:3AC4B7F9.7C73455A@free.fr...
> : Ken Garlington wrote:
> : >
> : > "Jean-Marc Bourguet" <jbourguet@free.fr> wrote in message
> : > news:3AC46252.B7E54EA6@free.fr...
> : > : Ken Garlington wrote:
> : > :
> : > : > Could you post an example of such a template, and what in the C++
> : > standard
> : > : > you rely upon to guarantee compile-time calculations?
> : > :
> : > : First feature, things like
> : > :    enum { foo = x+y*z; }
> : > : are valid as long as x, y and z value are known at compile time and
> have
> : > : to be evaluated at compile time.
> : >
> : > Isn't this usually resolvable as a constant by most Ada compilers? At
> least
> : > the ones I know will usually do so.
> :
> : It is quite difficult to come with the equivalent in Ada.  One is
> :    foo : constant = x+y*z;
> : is indeed resolvable by most Ada compiler.
> :
> : > More to the point, does the C++ standard _require_ that foo not generate
> any
> : > assembly instructions to be executed at run-time? If so, what does it
> say?
> :
> : I've not checked what the standard says precisely.  The enum values are
> : a compile time constant.  They may be used in context like case label
> : which are to be fixed at compile time.  This
> :
> : enum { a = 2, b = 3, c = 4, d = 7 };
> : enum { foo = a+b*c };
> : enum { bar = a*d };
> :
> : void f() {
> :   int foobar;
> :   switch(foobar) {
> :     case foo:
> :       break;
> :     case bar:
> :       break;
> :   }
> : }
> :
> : is required to produce a diagnostic as foo and bar have the same value.
> 
> Same with Ada, as far as I know.

I'm totally unable to come with an equivalent in Ada.  There is no
anonymous enum types, here you have three, the equivalent of the case
labels are constrained to be of the same types, here the value on which
one switch is of one type and the two labels of two different types,...

> These examples are all in terms of "the value has to be calculated as a
> scalar before it is used." This is *not* the same as saying "no code is
> generated at run-time".

I think there are NO requirement about generated code excepted the
observable behavior for conforming program.  Everybody would be
surprised that the generated code for the factorial template I gave
produced something other than what is generated for

int main() {
   std::cout << 3628800 << std::endl;
}

-- Jean-Marc



  reply	other threads:[~2001-04-01  8:59 UTC|newest]

Thread overview: 86+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-03-27  7:10 Compile time executed functions Mats Karlssohn
2001-03-27 13:30 ` Ken Garlington
2001-03-28  7:08   ` Mats Karlssohn
2001-03-28 19:07     ` Phaedrus
2001-03-29  7:41       ` Mats Karlssohn
2001-03-29  5:02     ` Ken Garlington
2001-03-29  7:58       ` Mats Karlssohn
2001-03-29 14:28         ` Ken Garlington
2001-03-29 14:48           ` Ted Dennison
2001-04-04  7:52             ` Mats Karlssohn
2001-04-04 14:05               ` Ted Dennison
2001-04-05  6:30                 ` Mats Karlssohn
2001-03-29 19:48           ` Simon Wright
2001-03-31 19:30             ` Ken Garlington
2001-04-04  7:53             ` Mats Karlssohn
2001-03-30 10:41           ` Jean-Marc Bourguet
2001-03-30 16:13             ` Ken Garlington
2001-03-30 16:47               ` Jean-Marc Bourguet
2001-03-30 18:54                 ` Stephen Leake
2001-04-01  8:42                   ` Jean-Marc Bourguet
2001-03-31 19:30                 ` Ken Garlington
2001-04-01  8:59                   ` Jean-Marc Bourguet [this message]
2001-04-01 18:22                     ` Ken Garlington
2001-04-02  9:30                       ` Jean-Marc Bourguet
2001-04-02 12:42                         ` Robert A Duff
2001-04-02 14:16                           ` Jean-Marc Bourguet
2001-04-03  0:33                           ` Pat Rogers
2001-04-02 13:09                         ` Ken Garlington
2001-04-02 13:40                           ` Robert A Duff
2001-04-02 23:29                             ` Ken Garlington
2001-04-13 23:11                               ` Robert A Duff
2001-04-02 14:32                           ` Jean-Marc Bourguet
2001-04-04  7:59             ` Mats Karlssohn
2001-04-04  7:47           ` Mats Karlssohn
2001-04-06  0:33             ` Ken Garlington
2001-04-09 12:21               ` Mats Karlssohn
2001-04-13 15:51                 ` Tucker Taft
2001-03-27 14:39 ` Ted Dennison
2001-03-27 16:40   ` Mark Biggar
2001-03-27 18:14   ` Florian Weimer
2001-03-27 18:15   ` Florian Weimer
2001-03-27 18:57     ` Ted Dennison
2001-03-27 19:22       ` Florian Weimer
2001-03-27 20:23         ` Ted Dennison
2001-03-27 22:15           ` Florian Weimer
2001-03-27 23:30             ` Georg Bauhaus
2001-03-28  9:54               ` Florian Weimer
2001-03-28 15:20             ` Ted Dennison
2001-03-28 16:12               ` David C. Hoos, Sr.
2001-03-28 21:15               ` Robert A Duff
2001-03-28 21:56                 ` Brian Rogoff
2001-03-29  8:18                 ` Mats Karlssohn
2001-03-29  8:11               ` Mats Karlssohn
2001-03-29 14:37                 ` Ted Dennison
2001-03-29 16:35                   ` Mark Biggar
2001-03-29 19:27                     ` Florian Weimer
2001-03-29 19:28                     ` Florian Weimer
2001-03-30  3:41                       ` Ken Garlington
2001-03-30  4:32                         ` Brian Rogoff
2001-03-30 14:27                           ` Compile time executed functions [OT] Karel Thönissen
2001-03-30 17:30                             ` Scheveningen (Re: Compile time executed functions [OT]) Ray Blaak
2001-03-30 17:39                             ` More {OT] (Was " Brian Rogoff
2001-03-30 23:39                               ` Karel Thönissen
2001-03-30 17:47                         ` Compile time executed functions Brian Hanson
2001-03-30  0:06                     ` Robert A Duff
2001-03-30 15:02                       ` Ted Dennison
2001-03-30 20:57                         ` Robert A Duff
2001-04-02 14:26                           ` Ted Dennison
2001-03-30 17:33                       ` Ray Blaak
2001-03-29  8:25               ` Florian Weimer
2001-03-28  7:17   ` Mats Karlssohn
2001-03-29  1:35   ` Jon S Anthony
2001-03-27 14:39 ` Robert A Duff
2001-03-27 15:09   ` Ted Dennison
2001-03-27 16:33     ` Robert A Duff
2001-03-27 23:36     ` Ken Garlington
2001-03-28 20:47     ` Mark Lundquist
2001-03-28  7:29   ` Mats Karlssohn
2001-03-28 22:15     ` Robert A Duff
2001-03-29  8:43       ` Mats Karlssohn
2001-03-31  4:12         ` Robert A Duff
2001-04-05  7:06           ` Mats Karlssohn
2001-04-13 23:18             ` Robert A Duff
2001-03-29  5:02     ` Ken Garlington
2001-03-28  7:31 ` Mats Karlssohn
2001-03-30  8:57 ` Georg Bauhaus
replies disabled

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