Thanks for the reply Jonathan, but it didn't work for me: void abc(T) (T[] parm1) if (isDynamicArray!T) { writeln("array : ", parm1); }
Nor did: void abc(T) (T[] parm1) if (isStaticArray!T) { writeln("array : ", parm1); } Output is the same: simpleparm: 1 simpleparm: str simpleparm: [1, 2] John On Sat, Oct 29, 2011 at 8:41 AM, Jonathan M Davis <jmdavisp...@gmx.com>wrote: > On Saturday, October 29, 2011 08:24:29 J Arrizza wrote: > > I have a template that I'd like to have a specialization for arrays. > > Initiall I need it to work for byte arrays, but I'd like to make it > > eventually work for all arrays. The page > > http://d-programming-language.org/template says to use > > > > template TFoo(T : T[]) { ... } // #2 > > > > > > but when I try it, it doesn't quite work: > > > > template abc(T) > > { > > void abc(T parm1) > > { > > writeln("simpleparm: ", parm1); > > } > > } > > > > template abc(T: T[]) > > { > > void abc(T parm1) > > { > > writeln("array : ", parm1); > > } > > } > > > > > > void main(string[] args) > > { > > abc(1); > > abc("str"); > > int[] arr = [1, 2]; > > abc(arr); > > } > > > > > > The output is: > > > > simpleparm: 1 > > simpleparm: str > > simpleparm: [1, 2] > > > > > > Which is not what I want, it needs to be the specialized template for > > arrays. Note, this doesn't work either: > > > > template abc(T: T[]) > > { > > void abc(T[] parm1) > > { > > writeln("array : ", parm1); > > } > > } > > Use std.traits.isDynamicArray in a template constraint. eg. > > void abc(T)(T parm1) > if(isDynamicArray!T) > { > } > > - Jonathan M Davis > -- John blog: http://arrizza.blogspot.com/ web: http://www.arrizza.com/