static if "Pointer-Type"

Thomas Kuehne thomas-dloop at kuehne.cn
Sun Mar 5 08:05:34 PST 2006


-----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-----



More information about the Digitalmars-d-learn mailing list