D1 -> D2
Steven Schveighoffer
schveiguy at yahoo.com
Fri Nov 19 05:01:27 PST 2010
On Fri, 19 Nov 2010 01:47:27 -0500, Fawzi Mohamed <fawzi at gmx.ch> wrote:
> From the discussion it seems that defining something like:
>
> version(D_Version2){
> template Const(T){
> alias const(T) Const;
> }
> template Immutable(T){
> alias immutable(T) Immutable;
> }
> immutable(T) Idup(T)(T val){
> return val.idup;
> }
> alias const(char)[] cstring;
> } else {
> template Const(T){
> alias T Const;
> }
> template Immutable(T){
> alias T Immutable;
> }
> T Idup(T)(T val){
> return val.dup;
> }
> alias char[] string;
> alias char[] cstring;
> }
>
> could help a lot
> later one can simply replace Const! with const and Immutable! with
> immutable, Idup replacement is more complicated, but doable
> What is not so clear is how to cope with scope, because I have lot of
> delegates around that will need it.
> For it a preprocessing step might really be the best thing, or someone
> knows a smart way to cope with that?
BTW, this doesn't work as well as you would think. The problem is with
IFTI.
For example, IFTI can handle this:
void foo(T)(const(T) arg)
but cannot handle this:
void foo(T)(Const!(T) arg)
It was one of the things we were trying to do in Tango for D2, we had
aliases for const/immutable/mutable strings templated on character type,
but all of Tango's IFTI usage failed to compile. It's a really old bug I
filed:
http://d.puremagic.com/issues/show_bug.cgi?id=1653
which was superseded by:
http://d.puremagic.com/issues/show_bug.cgi?id=1807
-Steve
More information about the Digitalmars-d
mailing list