On Fri, 23 Sep 2011 11:51:35 -0400, Gor F. Gyolchanyan
<gor.f.gyolchan...@gmail.com> wrote:
I have a proposal to introduce and optional explicit separation of
compile-time facilities from run-time facilities.
There is a new keyword, called compiletime (or something similar).
The keyword can be used with `is` expression to detect whether the
current
scope is executing in compile-time or not.
static if(__traits(compiletime))
{
// ...
}
static if(__ctfe) does this already
The keyword is a storage class for declarations of variables, types and
functions.
A variable, declared with this keyword behaves much like a enum:
compiletime float dmdVersion = 2.055;
This keyword reflects the nature of dmdVersion much better, then the
`enum`
keyword, since it does not actually enumerate anything.
dmdVersion does not exist at run-time (hence, cannot be taken address
of) just
like enums.
This is a long dead horse, enum is here to stay in its current meaning,
much as a lot of us don't like it. You're likely to get nowhere in this
argument.
All of the rest of your points are solved with static if(__ctfe)
-Steve