Bartosz Milewski seems to like D more than C++ now :)

Jonathan M Davis jmdavisProg at gmx.com
Fri Sep 20 10:52:55 PDT 2013


On Friday, September 20, 2013 10:47:15 Andrei Alexandrescu wrote:
> On 9/20/13 10:02 AM, Szymon Gatner wrote:
> > On Friday, 20 September 2013 at 16:57:43 UTC, Jonathan M Davis wrote:
> >> If an object is const, then all of its members are const, which means
> >> that any
> >> ranges you get from its members will be const, making such ranges
> >> useless.
> > 
> > That is so weird to hear considering I added ranges to my C++ code and
> > my Vector<T>::all() const can easily return non-const range even tho
> > container is itself const. This kinda looks like D is more limited in
> > that area than C++... Or I really am not getting something.
> 
> Yah, it should be possible for a const container to offer ranges over
> its (non-modifiable) elements.

That's probably easy to do if the container is well-written, because the 
container creates the range. The problem is converting a const range to tail 
const one, which is what you have to do if you ever end up with a const range 
for any reason, and if you're using const much, that's trivial to do 
(especially if you ever have a range as a member variable). Unfortunately, in 
practice, that conversion is quite difficult to do with user-defined types even 
though it works just fine with arrays.

- Jonathan M Davis


More information about the Digitalmars-d mailing list