On 2014-05-08 03:58:21 +0000, Andrei Alexandrescu
<seewebsiteforem...@erdani.org> said:
So there's this recent discussion about making T[] be refcounted if and
only if T has a destructor.
That's an interesting idea. More generally, there's the notion that
making user-defined types as powerful as built-in types is a Good
Thing(tm).
...
This magic of T[] is something that custom ranges can't avail
themselves of. In order to bring about parity, we'd need to introduce
opByValue which (if present) would be automatically called whenever the
object is passed by value into a function.
Will this solve the problem that const(MyRange!(const T)) is a
different type from const(MyRange!(T))? I doubt it. But they should be
the same type if we want to follow the semantics of the language's
slices, where const(const(T)[]) is the same as const(T[]).
Perhaps this is an orthogonal issue, but I wonder whether a solution to
the above problem could make opByValue unnecessary.
--
Michel Fortin
michel.for...@michelf.ca
http://michelf.ca