From: "REH" <spamjunk@stny.rr.com>
Subject: Re: where exactly c++,c fail and Ada gets thru'
Date: 27 Apr 2006 09:48:08 -0700
Date: 2006-04-27T09:48:08-07:00 [thread overview]
Message-ID: <1146156488.812085.225600@g10g2000cwb.googlegroups.com> (raw)
In-Reply-To: <1235818.stAph9vF03@linux1.krischik.com>
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.
next prev parent reply other threads:[~2006-04-27 16:48 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 [this message]
2006-04-28 7:49 ` Martin Krischik
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