<br><br><div class="gmail_quote">On Mon, Aug 2, 2010 at 00:37, Andrej Mitrovic <span dir="ltr">&lt;<a href="mailto:andrej.mitrovich@gmail.com">andrej.mitrovich@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im"><br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex"><div class="gmail_quote"><div>That&#39;s because the first part of the constraint is tested, to allow for short-circuiting the second part. So the bad array comparison triggers the problem in object._EqArray.</div>
<div>

<br></div><div>You should always test for the most general constraint first, I guess. In this particular case, use areComparable!(A,B) as the first argument to &amp;&amp; in both templates.</div><br></div></blockquote><div>

 </div></div></div>Let me see if I&#39;m getting this right. <br><br>false &amp;&amp; true will short circuit to false (this is normal).<br><br>true &amp;&amp; false will short circuit to true? How can that be? It&#39;s not a logical OR, its an AND, and as far as I know both expressions need to be True to evaluate to True. Or is it different for template constraints?<br>
</blockquote><div><br></div><div>I was answering you about the &quot;incompatible types&quot; error. The first part of the template, &#39;is(typeof(longer[0 .. 1] == shorter) : bool&#39;, triggers the error and that stops the compilation process. I agree that, if longer[0..1] == shorter is an error, then we could have is(typeof()) result in &#39;true&#39;. But here what happens is that everything stops. I&#39;ll post about this on the main list, see if it&#39;s normal behavior or not and add a bug report.</div>
<div><br></div><div><br></div><div>Philippe</div><div><br></div></div>