www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - static if "Pointer-Type"

reply Philipp Heise <heise in.tum.de> writes:
Hi,

i have the following problem in a template:

class SomeClass(T) {
 T[] elements;

 ...
 /*code for adding and removing elements*/
 ...

 public int contains(T x) {

  /*x could be null if T is a pointer-type*/
  static if("T is a Pointer-Type") { /*<- How can i do this ???*/
    if(x is null){
     foreach(T y;elements){
      if(y is null) return true;
     }
     return false;
    }
   }

   ...
   /*rest of the method*/
   ...
 }

 ...

}


thnx Philipp
Mar 05 2006
parent Thomas Kuehne <thomas-dloop kuehne.cn> writes:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Philipp Heise schrieb am 2006-03-05:
 Hi,

 i have the following problem in a template:

 class SomeClass(T) {
  T[] elements;

  ...
  /*code for adding and removing elements*/
  ...

  public int contains(T x) {

   /*x could be null if T is a pointer-type*/
   static if("T is a Pointer-Type") { /*<- How can i do this ???*/
     if(x is null){
      foreach(T y;elements){
       if(y is null) return true;
      }
      return false;
     }
    }

    ...
    /*rest of the method*/
    ...
  }

  ...

 }

# class C(T){ # private T[] elements; # # public int contains(T t){ # static if(is(T == class)){ # pragma(msg, "it's a class"); # }else static if(is(T == delegate) || is(T == function)){ # pragma(msg, "it's a function pointer"); # }else static if(is(T : void*)){ # pragma(msg, "it's a 'plain' pointer"); # }else{ # pragma(msg, "this isn't a pointer type"); # } # } # } Thomas -----BEGIN PGP SIGNATURE----- iD8DBQFECxlp3w+/yD4P9tIRAmhUAKCj6VIj6TRqQ6k+JAm7nG+k9H35PACgnRKs d9hij5BBjqOSB+3hpexDtRg= =XyVC -----END PGP SIGNATURE-----
Mar 05 2006