On Tue, 01 Nov 2011 14:55:45 -0400, J Arrizza <cppge...@gmail.com> wrote:
Steven, I see, but here's IsStaticArray from traits.d template isStaticArray(T : U[N], U, size_t N) { enum bool isStaticArray = true; } template isStaticArray(T) { enum bool isStaticArray = false; } It looks like the first version is using the "[]" format. It is different in that it has the [N] and then goes on to specify that N is a size_t.
Template specification is weird, similar looking things can have *completely different* meanings.
The compiler uses a lot of deduction to match template parameters. There are many forms of specialization and comparison.
The equivalent for your case would be: void abc(T : U[], U) (T parm1) In other words, "type T is a form of U[], where U is another type". You should read the spec on how templates work here: http://www.d-programming-language.org/template.html Pay close attention to argument deduction. Another good section to read is the "is expression": http://www.d-programming-language.org/expression.html#IsExpression -Steve