Still no joy:<div><br></div><div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><div><font class="Apple-style-span" face="'courier new', monospace">$ dmd -v</font></div>
<div><font class="Apple-style-span" face="'courier new', monospace">  DMD64 D Compiler v2.055</font></div></blockquote><div><br></div></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">
<div><div><font class="Apple-style-span" face="'courier new', monospace">$ rm -f dtest; dmd dtest.d ; ./dtest</font></div></div></blockquote><div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">
<div><div><font class="Apple-style-span" face="'courier new', monospace">dtest.d(48): found ',' when expecting ')'</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">dtest.d(48): found 'Elem' when expecting ')'</font></div>
</div><div><div><font class="Apple-style-span" face="'courier new', monospace">dtest.d(48): semicolon expected following function declaration</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">dtest.d(48): Declaration expected, not ')'</font></div>
</div><div><div><font class="Apple-style-span" face="'courier new', monospace">dtest.d(51): unrecognized declaration</font></div></div></blockquote><div>         </div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">
<div><div><font class="Apple-style-span" face="'courier new', monospace">//I tried both "=" and "=="</font></div><div><font class="Apple-style-span" face="'courier new', monospace">void abc(Type)(Type param1)</font></div>
</div><div><div><font class="Apple-style-span" face="'courier new', monospace">if(is(Type == Elem[], Elem))  //this is line48</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">  {</font></div>
</div><div><div><font class="Apple-style-span" face="'courier new', monospace">  writeln("array : ", parm1);</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">  }</font></div>
</div></blockquote><div><br></div><div>I tried a bunch of variants, the most straightforward was:</div><div><br></div><div><font class="Apple-style-span" face="'courier new', monospace">    if(is(Type == int[]))</font></div>
<div><font class="Apple-style-span" face="'courier new', monospace"><br></font></div><div><font class="Apple-style-span" face="arial, helvetica, sans-serif">which gave the compile error:</font></div><div><br></div>
</div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><div><div><div><font class="Apple-style-span" face="'courier new', monospace">dtest.d(70): Error: template dtest.abc(T) if (is(T == int[])) abc(T) if (is(T == int[])) matches more than one template declaration, dtest.d(36):abc(T) if (is(T == int[])) and dtest.d(42):abc(T)</font></div>
</div></div></blockquote><div><div><br></div><div>line 70 is the instantiation:</div></div><div><br></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><div><div><div>
<font class="Apple-style-span" face="'courier new', monospace">    int[] arr = [1, 2];</font></div></div></div><div><div><div><font class="Apple-style-span" face="'courier new', monospace">    abc(arr);  //line 70</font></div>
</div></div></blockquote><div><div>John</div><br><div class="gmail_quote">On Sat, Oct 29, 2011 at 12:40 PM, Gor Gyolchanyan <span dir="ltr"><<a href="mailto:gor.f.gyolchanyan@gmail.com">gor.f.gyolchanyan@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Try this:<br>
<br>
void abc(Type)(Type param1)<br>
    if(is(Type = Elem[], Elem))<br>
{<br>
    writeln("array : ", parm1);<br>
}<br>
<br>
You can write just about any kind of complex "is" expressions there,<br>
including templates with partially specialized parameters and arrays<br>
of all sorts.<br>
<div><div></div><div class="h5"><br>
On Sat, Oct 29, 2011 at 8:11 PM, J Arrizza <<a href="mailto:cppgent0@gmail.com">cppgent0@gmail.com</a>> wrote:<br>
> Thanks for the reply Jonathan, but it didn't work for me:<br>
><br>
> void abc(T) (T[] parm1)<br>
> if (isDynamicArray!T)<br>
> {<br>
>   writeln("array : ", parm1);<br>
> }<br>
><br>
> Nor did:<br>
><br>
> void abc(T) (T[] parm1)<br>
> if (isStaticArray!T)<br>
> {<br>
>   writeln("array : ", parm1);<br>
> }<br>
><br>
> Output is the same:<br>
><br>
> simpleparm: 1<br>
> simpleparm: str<br>
> simpleparm: [1, 2]<br>
><br>
><br>
> John<br>
> On Sat, Oct 29, 2011 at 8:41 AM, Jonathan M Davis <<a href="mailto:jmdavisProg@gmx.com">jmdavisProg@gmx.com</a>><br>
> wrote:<br>
>><br>
>> On Saturday, October 29, 2011 08:24:29 J Arrizza wrote:<br>
>> > I have a template that I'd like to have a specialization for arrays.<br>
>> > Initiall I need it to work for byte arrays, but I'd like to make it<br>
>> > eventually work for all arrays. The page<br>
>> > <a href="http://d-programming-language.org/template" target="_blank">http://d-programming-language.org/template</a> says to use<br>
>> ><br>
>> > template TFoo(T : T[]) { ... } // #2<br>
>> ><br>
>> ><br>
>> > but when I try it, it doesn't quite work:<br>
>> ><br>
>> > template abc(T)<br>
>> >   {<br>
>> >     void abc(T parm1)<br>
>> >       {<br>
>> >         writeln("simpleparm: ", parm1);<br>
>> >       }<br>
>> >   }<br>
>> ><br>
>> > template abc(T: T[])<br>
>> >   {<br>
>> >     void abc(T parm1)<br>
>> >       {<br>
>> >         writeln("array : ", parm1);<br>
>> >       }<br>
>> >   }<br>
>> ><br>
>> ><br>
>> > void main(string[] args)<br>
>> >   {<br>
>> >     abc(1);<br>
>> >     abc("str");<br>
>> >     int[] arr = [1, 2];<br>
>> >     abc(arr);<br>
>> >   }<br>
>> ><br>
>> ><br>
>> > The output is:<br>
>> ><br>
>> > simpleparm: 1<br>
>> > simpleparm: str<br>
>> > simpleparm: [1, 2]<br>
>> ><br>
>> ><br>
>> > Which is not what I want, it needs to be the specialized  template for<br>
>> > arrays. Note, this doesn't work either:<br>
>> ><br>
>> > template abc(T: T[])<br>
>> >   {<br>
>> >     void abc(T[] parm1)<br>
>> >       {<br>
>> >         writeln("array : ", parm1);<br>
>> >       }<br>
>> >   }<br>
>><br>
>> Use std.traits.isDynamicArray in a template constraint. eg.<br>
>><br>
>> void abc(T)(T parm1)<br>
>>    if(isDynamicArray!T)<br>
>> {<br>
>> }<br>
>><br>
>> - Jonathan M Davis<br>
><br>
><br>
><br>
> --<br>
> John<br>
> blog: <a href="http://arrizza.blogspot.com/" target="_blank">http://arrizza.blogspot.com/</a><br>
> web: <a href="http://www.arrizza.com/" target="_blank">http://www.arrizza.com/</a><br>
><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>John<br>blog: <a href="http://arrizza.blogspot.com/">http://arrizza.blogspot.com/</a><br>web: <a href="http://www.arrizza.com/">http://www.arrizza.com/</a><br>

</div>