Re: immutable ref foreach on values

2012-06-22 Thread bearophile
Dmitry Olshansky: then every array is implicitly castable to tail immutable. int[] array = [1, 2]; foreach (ref immutable(int) x; array) { ... func(arr); // arr is mutable, thus func can change x // so x can be at most const } I understand, thank you :-) Bye,

Re: immutable ref foreach on values

2012-06-22 Thread Dmitry Olshansky
On 22-Jun-12 16:16, bearophile wrote: Tobias Pankrath: I think it's good. In this special case, the compiler can see that you can't change array behind his back. That seems not to be true in general. But aren't int implicitly castable to immutable? then every array is implicitly castable t

Re: immutable ref foreach on values

2012-06-22 Thread bearophile
Tobias Pankrath: I think it's good. In this special case, the compiler can see that you can't change array behind his back. That seems not to be true in general. But aren't int implicitly castable to immutable? Bye, bearophile

Re: immutable ref foreach on values

2012-06-22 Thread Tobias Pankrath
On Friday, 22 June 2012 at 11:07:14 UTC, bearophile wrote: Is this expected and good? void main() { int[] array = [1, 2]; foreach (ref const(int) x; array) {} // OK foreach (ref immutable(int) x; array) {} // error } DMD 2.060alpha: temp.d(4): Error: argument type mismatch, int to

immutable ref foreach on values

2012-06-22 Thread bearophile
Is this expected and good? void main() { int[] array = [1, 2]; foreach (ref const(int) x; array) {} // OK foreach (ref immutable(int) x; array) {} // error } DMD 2.060alpha: temp.d(4): Error: argument type mismatch, int to ref immutable(int) Thank you, bye, bearophile