Check Instance of Template for Parameter Type/Value
anonymous via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Mon Oct 19 08:07:17 PDT 2015
On Monday, October 19, 2015 04:51 PM, Stewart Moth wrote:
> struct Vector(type, int dimension_){ ... }
>
> Where type is going to be an int/float/etc and dimension_ is
> 2/3/4.
>
> I could write a bunch of functions for each case, but I'd rather
> not... I'd like to use something like the following:
>
> void foo(T)(Array!T array){
> if(isInstanceOf!(Vector, T)){
> //get type of T or check it
> //test if dimension_ is 2 or 3 or 4
> ...
> } else {
> //Non-vector stuff
> ...
> }
> }
>
> But to do that I need to check that parameters of T as if it were
> an instantiated instance of Vector and I'm not sure how to
> accomplish that... Can anyone help me out with what I need to do?
You can use std.traits.TemplateArgsOf:
----
static if(isInstanceOf!(Vector, T)){ /* note: must be a static if */
enum dimensions = TemplateArgsOf!T[1];
static if(dimensions == 2) {...}
}
----
More information about the Digitalmars-d-learn
mailing list