endsWith() doesn't work with const(wchar[])s
Jonathan M Davis
jmdavisProg at gmx.com
Thu Jan 13 22:57:58 PST 2011
On Thursday 13 January 2011 21:21:06 %u wrote:
> Hi,
>
> I've noticed that some functions, such as algorithm.endsWith, don't work
> with constant arrays. Is this a bug, or is there a reason behind it? It
> forces the user to perform dangerous casts to avoid object creation, and
> it doesn't seem like the functions actually need to perform any
> manipulations.
Phobos doesn't really deal with const or immutable correctly at this point. A
number of things which should be able to handle const or immutable can't. And
then there are things which you'd think _should_ be able to but can't because of
the transivity of const and immutable. There are a number of outstanding bugs
related to const and immutable which makes dealing with them at times a bit of a
pain if not outright impossible. It's on the list of things to be focused on
after the 64-bit port of dmd is done.
As it stands, there are a number of algorithms which just won't work with const
or immutable arrays.
Regardless, a fully const array is never going to work with a function like
endsWith() for the simple reason that such functions have to actually be able to
process the range that they're given, and if the range is const, you can't call
popFront() or popBack() on it, so it just isn't going to work.
Now, if you take a _slice_ of a const array, it should work, because while the
elements of the array will remain const, the slice itself won't be, so
endsWith() can process it.
- Jonathan M Davis
More information about the Digitalmars-d
mailing list