static if and templates
    Christian Kamm 
    kamm.incasoftware at shift-at-left-and-remove-this.de
       
    Thu Sep 27 11:55:21 PDT 2007
    
    
  
Don Clugston wrote:
>> template isArray(T){
>>   static if(is(T U : U[]))
>>     const isArray = true;
>>   else
>>     const isArray = false;
>> }
> 
> If you use:
>     static if (is(typeof(T[0]))
> it will work for user-defined types.
Indeed that will accept anything that provides opIndex. You can check for
opSlice and the rest in a similar way, if your code requires them to be
available. With these checks, you can even skip the static if:
template hasIndexAndSlice(T) {
  const bool hasIndexAndSlice = is(typeof(T[0])) && is(typeof(T[0..0]));
}
    
    
More information about the Digitalmars-d-learn
mailing list