On Tuesday, December 21, 2010 02:57:45 d coder wrote: > > I do know the template. I will try out your solution. Will let you > > know if I face issues. > > Simen > > It works perfect, And this is exactly what I was looking for. If you > see my original post, I also thought this form of "is" expression > should work. Just could not get around to the right syntax. > > With your help it is working now. I am using a slightly more elaborate > check which is obvious but I am writing it here to just let the list > know. > > static if ( is( typeof(foo) f == S!T, T : int) ) { > // foo is an object of type S!T > // where T is convertible to int > }
Yes, that sort of thing works. The problem is when you want to know whether an arbitrary type is an instantiation of a particular template. For instance, if you have struct S(T) { } struct Q(T) { } and you pass S!int to Q - Q(S!int) - Q sees S!int is a specific type, not an instantiation of S, so it's difficult to have a template constraint checking that the type passed to Q is an instantiation of S. However, if you know exactly which instantiation that you're checking for, then it's relatively easy. - Jonathan M Davis