Transience of .front in input vs. forward ranges

Mehrdad wfunction at hotmail.com
Sun Nov 4 13:52:28 PST 2012


On Sunday, 4 November 2012 at 21:30:39 UTC, monarch_dodra wrote:
> Not sure this is specific to D. Just because you pass something 
> by value doesn't mean somebody else can't modify what's 
> underneath.


By "D" I didn't mean the language, I meant the current practices 
in Phobos and other libraries, as compared to (say) the STL.


> C++ gets away with this with an obsessive ownership model. Copy 
> always trigger duplication of internals everytime anyting is 
> ever passed by value. In D, you have dup, to do it only when 
> you really need it.


Yeah, that's exactly what I mean. It's never ambiguous in C++ 
(although you certainly COULD make it ambiguous if you want to), 
because copying always, well, copies.


In D it's a mishmash of so many things you can't figure out when 
anything is copied or not...



> Heck, D has it better than C++. If you want to use istream 
> iterators in C++ (say, to interface with an algorithm), you 
> can't chose char* as a re-useable output buffer. You HAVE to 
> use std:::string, always allocating.


Better as in more potential for performance? Heck yeah.

Better as in, easier to reason about the code? Well, no, that's 
what's causing this whole thread...


More information about the Digitalmars-d mailing list