Hello Robert<div><br></div><div>As I try adding more code, I get into more and more issues with integral parameters. See the following code:</div><div><br></div><div>Regards</div><div>- Puneet</div><div><br></div><div>// File implicit.d<div>

alias int R;</div><div>// alias size_t R;</div><div>struct Foo (R N) {</div><div>  version(v1) {void opAssign (R NN)(Foo!NN f) {/*do nothing*/}}</div><div>  version(v2) {void opAssign (T:Foo!NN, R NN)(T f) {/*do nothing*/}}</div>

<div>  @property Foo!(I) range(R I)() {return Foo!(I)();}</div><div>}</div><div>void main() {</div><div>  Foo!4 foo1;</div><div>  Foo!7 foo2;</div><div>  foo2 = foo1;<span class="Apple-tab-span" style="white-space:pre">         </span>// compiles with both v2 and v1/(only when R is aliased to int)</div>

<div>  foo2 = foo1.range!4;<span class="Apple-tab-span" style="white-space:pre">        </span>// compiles with v1/int and v2/int -- does not compile with R alias to size_t</div><div>  foo2 = foo1.range!2;<span class="Apple-tab-span" style="white-space:pre">  </span>// compiles only with v1/int -- does not compile with v2 at all</div>

<div>}</div><div><br></div></div>