comp.lang.ada
 help / color / mirror / Atom feed
From: "Martin Krischik" <krischik@users.sourceforge.net>
Subject: Re: where exactly c++,c fail and Ada gets thru'
Date: 28 Apr 2006 00:49:13 -0700
Date: 2006-04-28T00:49:13-07:00	[thread overview]
Message-ID: <1146210553.562353.140540@j73g2000cwa.googlegroups.com> (raw)
In-Reply-To: 1146156488.812085.225600@g10g2000cwb.googlegroups.com

REH wrote:
> Martin Krischik wrote:
> > Maciej Sobczak wrote:
> >
> > > Yes, classes are used to define new types. Is there any problem with
> > > this? It is also necessary in Ada if we want to do just a bit more of
> > > what is provided by type and subtype constructs.
> >
> > Say:
> >
> > type Y_Type is range 1 .. 10;
> > subtype X_Type is new x range 1 .. 5;
> >
> > function F (X: X_Type) return Y_Type is
> > begin
> >   return X + 3;
> > end F
> >
> > Now I would expect that an Ada compiler will not insert any runtime checks
> > as X + 3 is allways in the range of Y_Type. However:
> >
> > function G (X: X_Type) return Y_Type is
> > begin
> >   return X + 7;
> > end G;
> >
> > may well be outside the range of Y_Type and if so CONSTRAINT_ERROR will be
> > raised.
> >
> > Now say we have a suitable C++ range template:
> >
> > typedef range<int, 1, 10> Y_Type;
> > typedef range<Y_Type, 1, 5> X_Type;
> >
> > Y_Type F (X_Type X)
> >   {
> >   return X + 3;
> >   }
> >
> > Y_Type G (X_Type X)
> >   {
> >   return X + 7;
> >   }
> >
> > Now anyone up to the challenge to define:
> >
> > template <typename Base_Type, Base_Type First, Base_Type Last>
> > range::operator = (Base_Type right)
> >
> > template <typename Base_Type, Base_Type First, Base_Type Last>
> > range::operator + (Base_Type right)
> >
> > template <typename Base_Type, Base_Type First, Base_Type Last>
> > range::range (Base_Type right)
> >
> > in such a way that it works like Ada - inclusive the *realistic* change that
> > the compiler will optimize away the range check in F ().
>
> I have done this.

I had a look. Looks impressive with all those includes. Looks like one
of thoses templates I never want to debug thrue.

But don't expect me to have found that magic static analysis something
trick. So:

How exactly did you do it?

Martin




  reply	other threads:[~2006-04-28  7:49 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-04-24  4:19 where exactly c++,c fail and Ada gets thru' Ananth the Boss
2006-04-24  5:05 ` jimmaureenrogers
2006-04-24  7:45   ` Ananth the Boss
2006-04-24 19:17   ` Martin Krischik
2006-04-24 20:23   ` Simon Wright
2006-04-24 22:34     ` Keith Thompson
2006-04-24 22:33   ` Keith Thompson
2006-04-25  5:23     ` Jeffrey R. Carter
2006-04-26 17:48     ` Martin Krischik
2006-04-26 19:33       ` Keith Thompson
2006-04-26 15:10   ` Maciej Sobczak
2006-04-26 17:32     ` Martin Krischik
2006-04-27 10:07       ` Maciej Sobczak
2006-04-27 21:19         ` Keith Thompson
2006-04-28  7:00         ` Martin Krischik
2006-04-28 12:27           ` Maciej Sobczak
2006-04-29  7:03             ` Martin Krischik
2006-04-29 14:08               ` REH
2006-05-01 10:20                 ` Xcriber51
2006-05-01 13:55                   ` REH
2006-05-02  6:43               ` Maciej Sobczak
2006-04-27 16:48       ` REH
2006-04-28  7:49         ` Martin Krischik [this message]
2006-04-28 11:17           ` REH
2006-04-29  6:47             ` Martin Krischik
2006-04-24  8:13 ` Rod Chapman
2006-04-25  1:57 ` Steve
replies disabled

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