dmd 2.063 released with 260 bugfixes and enhancements
Jonathan M Davis
jmdavisProg at gmx.com
Thu May 30 11:09:08 PDT 2013
On Thursday, May 30, 2013 20:00:24 Mafi wrote:
> What a great release! Great work!
>
> I really like the new langugage changes. One change caught my
> attention: #10 "The Template This Parameter now changes the
> member function qualifier". Does this mean that const/immutable
> ranges can implement a useful opSlice? Like
>
> struct MyRange!T {
> T[] data;
>
> MyRange!(ElementType!data) opSlice(this T)() {
> return MyRange(data);
> }
> }
>
> So that given the other range primitves this will work:
>
> const myConstRange = MyRange([5, 6, 7, 8]);
> foreach(x; myConstRange) {}
>
> Could this be made work with 2.063?
No, because you still have the fundamental problem that MyRange!T and MyRange!
(const T) are different types which potentially have no relation to one another
aside from the fact that they were generated by the same template. In the
general case, you can't just convert MyRange!T to MyRange!(const T). It only
works with arrays because the compiler understands them.
- Jonathan M Davis
More information about the Digitalmars-d-announce
mailing list