casting with preserving attributes

bearophile bearophileHUGS at lycos.com
Wed May 22 07:29:24 PDT 2013


Jack Applegame:

> Finally http://dpaste.1azy.net/fc503331

I suggest to use indents composed by 4 spaces.
Generally in D we use template constraints, instead of static ifs 
with a nice error message...
In such complex situations I also suggest to add braces.

Something like this:


auto castElementType(T = byte, F)(ref F from)
if (isArray!F) {
     alias E = typeof(from[0]);

     static if(is(E == const)) {
         return cast(const(Unqual!T)[])from;
     } else static if(is(E == immutable)) {
         return cast(immutable(Unqual!T)[])from;
     } else static if(is(E == shared)) {
         return cast(shared(Unqual!T)[])from;
     } else {
         return cast(Unqual!T[])from;
     }
}


Bye,
bearophile


More information about the Digitalmars-d-learn mailing list