[Issue 19518] std.range.front() returns a dchar when applied to char[]

d-bugmail at puremagic.com d-bugmail at puremagic.com
Thu Dec 27 09:08:05 UTC 2018


https://issues.dlang.org/show_bug.cgi?id=19518

--- Comment #2 from Vijay Nayar <madric at gmail.com> ---
That makes sense for character processing. Perhaps my understanding of what
.front() and .popFront() do is incorrect then. I had assumed that they were
general purpose range methods that could also be used on arrays to treat them
like ranges as well.

In this particular case, I was implementing a DenseHashSet algorithm, optimized
for low memory overhead, when during my unittests, I discovered that they were
failing when I made a set of characters. The reason was that my template code
was using .front() to manage an internal array.

That may be the dilemma. What does the user have in mind when they use 'char'?
Is it strictly for unicode text processing, or is it piece of data with a well
defined size? Is it incumbent upon those who use templates to not use 'char'
for data in templates (and type-cast bytes), or is it incumbent upon template
writers to always consider this special case?

Or is this just the wrong usage of .front(), and array indexing, like data[0],
should be preferred?

--


More information about the Digitalmars-d-bugs mailing list