<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>