<div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
You should use either std.traits.isXxx systematically, or patterns systematically, but not both at the same time. Personally I prefer isXxx because they foster simple logic to decide what overloads should apply.</blockquote>

<br>
Also, when posting, you may want to include complete short programs so others can try them quickly.</blockquote><div><br></div><div>Andrei, I thought I had posted the entire program. Here it is again using only traits as you recommend:</div>
<div><br></div></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><div class="gmail_quote"><div><font class="Apple-style-span" face="'courier new', monospace"><div>
<div>import std.stdio;</div><div>import std.traits;</div><div>void abc(T) (T parm1)</div><div>  if (isNarrowString!T || (!isStaticArray!T && !isDynamicArray!T))</div><div>  {</div><div>  writeln("simpleparm: ", parm1);</div>
<div>  }</div><div>void abc(T) (T parm1)</div><div>  if (!isNarrowString!T && (isDynamicArray!T || isStaticArray!T) )</div><div>  {</div><div>  writeln("array : ", parm1);</div><div>  }</div><div>void main(string[] args)</div>
<div>  {</div><div>    writeln("v4");</div><div>    abc(1);</div><div>    abc("str");</div><div>    int[] arr = [1, 2];</div><div>    abc(arr);</div><div>    int[2] arr2 = [3, 4];</div><div>    abc(arr2);</div>
<div>  }</div></div><div><br></div></font></div></div></blockquote><div class="gmail_quote"><div class="gmail_quote"><div>And it does work, here's the output:</div></div></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">
<div class="gmail_quote"><div class="gmail_quote"><div><font class="Apple-style-span" face="'courier new', monospace"><div>simpleparm: 1</div><div>simpleparm: str</div><div>array : [1, 2]</div><div>array : [3, 4]</div>
</font></div></div></div></blockquote><div class="gmail_quote"><div class="gmail_quote"><div><br></div><div>Note my original intent was to differentiate between arrays and non-arrays only (lumping strings into non-array).</div>
<div><br></div><div>As for using only patterns, I can't get the compiler to disambiguate between non-arrays and arrays:</div><div><br></div></div></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">
<div class="gmail_quote"><div class="gmail_quote"><div><div><font class="Apple-style-span" face="'courier new', monospace">import std.stdio;</font></div></div></div></div><div class="gmail_quote"><div class="gmail_quote">
<div><div><font class="Apple-style-span" face="'courier new', monospace">import std.traits;</font></div></div></div></div><div class="gmail_quote"><div class="gmail_quote"><div><div><font class="Apple-style-span" face="'courier new', monospace">void abc(T, U = void, size_t N = 0) (T parm1)   //line 3</font></div>
</div></div></div><div class="gmail_quote"><div class="gmail_quote"><div><div><font class="Apple-style-span" face="'courier new', monospace">  {</font></div></div></div></div><div class="gmail_quote"><div class="gmail_quote">
<div><div><font class="Apple-style-span" face="'courier new', monospace">  writeln("simpleparm: ", parm1);</font></div></div></div></div><div class="gmail_quote"><div class="gmail_quote"><div><div><font class="Apple-style-span" face="'courier new', monospace">  }</font></div>
</div></div></div><div class="gmail_quote"><div class="gmail_quote"><div><div><font class="Apple-style-span" face="'courier new', monospace">void abc(T: U[N], U = char, size_t N) (T parm1)</font></div></div></div>
</div><div class="gmail_quote"><div class="gmail_quote"><div><div><font class="Apple-style-span" face="'courier new', monospace">  {</font></div></div></div></div><div class="gmail_quote"><div class="gmail_quote">
<div><div><font class="Apple-style-span" face="'courier new', monospace">  writeln("string : ", parm1);</font></div></div></div></div><div class="gmail_quote"><div class="gmail_quote"><div><div><font class="Apple-style-span" face="'courier new', monospace">  }</font></div>
</div></div></div><div class="gmail_quote"><div class="gmail_quote"><div><div><font class="Apple-style-span" face="'courier new', monospace">void abc(T) (T parm1)</font></div></div></div></div><div class="gmail_quote">
<div class="gmail_quote"><div><div><font class="Apple-style-span" face="'courier new', monospace">  {</font></div></div></div></div><div class="gmail_quote"><div class="gmail_quote"><div><div><font class="Apple-style-span" face="'courier new', monospace">  writeln("dynamic array : ", parm1);</font></div>
</div></div></div><div class="gmail_quote"><div class="gmail_quote"><div><div><font class="Apple-style-span" face="'courier new', monospace">  }</font></div></div></div></div><div class="gmail_quote"><div class="gmail_quote">
<div><div><font class="Apple-style-span" face="'courier new', monospace">void abc(T: U[N], U, size_t N) (T parm1)     </font><span class="Apple-style-span" style="font-family: 'courier new', monospace; ">//line 15</span></div>
</div></div></div><div class="gmail_quote"><div class="gmail_quote"><div><div><font class="Apple-style-span" face="'courier new', monospace">  {</font></div></div></div></div><div class="gmail_quote"><div class="gmail_quote">
<div><div><font class="Apple-style-span" face="'courier new', monospace">  writeln("static array : ", parm1);</font></div></div></div></div><div class="gmail_quote"><div class="gmail_quote"><div><div><font class="Apple-style-span" face="'courier new', monospace">  }</font></div>
</div></div></div><div class="gmail_quote"><div class="gmail_quote"><div><div><font class="Apple-style-span" face="'courier new', monospace">void main(string[] args)</font></div></div></div></div><div class="gmail_quote">
<div class="gmail_quote"><div><div><font class="Apple-style-span" face="'courier new', monospace">  {</font></div></div></div></div><div class="gmail_quote"><div class="gmail_quote"><div><div><font class="Apple-style-span" face="'courier new', monospace">    writeln("v4");</font></div>
</div></div></div><div class="gmail_quote"><div class="gmail_quote"><div><div><font class="Apple-style-span" face="'courier new', monospace">    abc(1);</font></div></div></div></div><div class="gmail_quote"><div class="gmail_quote">
<div><div><font class="Apple-style-span" face="'courier new', monospace">    abc("str");</font></div></div></div></div><div class="gmail_quote"><div class="gmail_quote"><div><div><font class="Apple-style-span" face="'courier new', monospace">    int[] arr = [1, 2];</font></div>
</div></div></div><div class="gmail_quote"><div class="gmail_quote"><div><div><font class="Apple-style-span" face="'courier new', monospace">    abc(arr);</font></div></div></div></div><div class="gmail_quote"><div class="gmail_quote">
<div><div><font class="Apple-style-span" face="'courier new', monospace">    int[2] arr2 = [3, 4];</font></div></div></div></div><div class="gmail_quote"><div class="gmail_quote"><div><div><font class="Apple-style-span" face="'courier new', monospace">    abc(arr2);                //line 27</font></div>
</div></div></div><div class="gmail_quote"><div class="gmail_quote"><div><div><font class="Apple-style-span" face="'courier new', monospace">  }</font></div></div></div></div></blockquote><div class="gmail_quote">
<div class="gmail_quote"><div><br></div><div>Here's the compiler error:</div><div><br></div></div></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><div class="gmail_quote">
<div class="gmail_quote"><div><div><font class="Apple-style-span" face="'courier new', monospace">dtest.d(27): Error: template dtest.abc(T,U = void,ulong N = 0) abc(T,U = void,ulong N = 0) matches more than one template declaration, dtest.d(3):abc(T,U = void,ulong N = 0) and dtest.d(15):abc(T : U[N],U,ulong N)</font></div>
</div></div></div><div class="gmail_quote"><div class="gmail_quote"><div><font class="Apple-style-span" face="'courier new', monospace"><br></font></div></div></div></blockquote><div class="gmail_quote"><div class="gmail_quote">
<div><br></div></div></div>