<div class="gmail_quote">On Wed, Jul 21, 2010 at 21:47, Simen kjaeraas <span dir="ltr">&lt;<a href="mailto:simen.kjaras@gmail.com">simen.kjaras@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<br>
I wrote this indexing struct. Clearly not perfect, but it sorta does the right things:<br>
<br>
To use, make opSlice take an Index parameter, and call its opCall with 
the length<br>
of the container. </blockquote><div><br>OK, it take the length and compute the result index, as in $/2+5, etc.<br>OK, I defined an opSlice(size_t i1, Index i2) {...} and it worked! Thanks Simen !<br>In my case, I guess the Index is just there to be a sentinel value, generated by __opdollar, as I for an infinite range, I do not have a length to give it, I just want arithmetic operations on Index to always return an Index.<br>
<br>Except... I cannot do that:  c[2..$+$] ... Ah, I get it: maybe like this:<br><br>Index opBinary( string op )( Index i ) const {<br>   Index result;<br>   result.dg = ( long value ) {<br>      mixin( &quot;return dg( value ) &quot; ~ op ~ &quot; i(value);&quot; );<br>
    };<br>    return result;<br>}<br><br>I don&#39;t understand you opUnary code:<br><br>Index opUnary( string op )( ) {<br>   dg = ( long value ) {<br>       mixin( &quot; auto tmp = dg( value ); tmp&quot; ~ op ~ &quot;; return tmp;&quot; );<br>
   };<br>   return this;<br>}<br><br>Shouldn&#39;t that be ;&quot; ~ op ~ &quot;tmp; return tmp;&quot; ?<br><br><br>So, cool, that works. I&#39;ll just have to check if operations on &#39;infinite&#39; Index work as they should.<br>
<br> </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">Wish there was a way to make late-bound templates in 
D, as that<br>
could allow for different value types depending on usage.<br>
Hm, maybe there is a way, now that I think of it. I shall have to check 
in the future.<br>
<br></blockquote><div><br>What do you mean?<br><br><br>Philippe<br><br></div></div>