static if and templates
    Oliver 
    oliver.ruebenkoenig at web.de
       
    Thu Sep 27 00:50:13 PDT 2007
    
    
  
Hi,
in the function isMatrix I would like to access the function isArray. Unfortunately, this does not work, even though if I use the definition of isArray directly it does work. 
How could I write the code using isArray? Thanks for any hints.
Oliver
------------------
import std.stdio;
bool isArray(T)(T expr){
    return (expr.mangleof)[0] == 'A';
}
bool isMatrix(T)(T expr){
    static if ( (expr.mangleof)[0] == 'A' ) // works
    //static if ( isArray(expr) )  // does NOT work
        return (expr.mangleof)[1] == 'A';
    else
        return false;
}
void main () {
    double s = 1.;
    double[] v = [1.,2.];
    double[][] m = [[1.,2.]];
    writefln("s: ", isArray(s), " ", isMatrix(s) );
    writefln("v: ", isArray(v), " ", isMatrix(v) );
    writefln("m: ", isArray(m), " ", isMatrix(m) );
}
    
    
More information about the Digitalmars-d-learn
mailing list