no [] operator overload for type Chunks!(char[])
Steven Schveighoffer
schveiguy at yahoo.com
Thu May 31 15:23:19 UTC 2018
On 5/30/18 5:41 PM, Malte wrote:
> On Wednesday, 30 May 2018 at 21:27:44 UTC, Ali Çehreli wrote:
>> On 05/30/2018 02:19 PM, Malte wrote:
>>> Why does this code complain at the last line about a missing []
>>> operator overload?
>>>
>>> auto buffer = new char[6];
>>> auto chunked = buffer.chunks(3);
>>> chunked[1][2] = '!';
>>>
>>> Same happens with wchar.
>>> Dchar and byte work as expected.
>>
>> UTF-8 auto decoding strikes again. :)
>>
>> Even though the original container is char[], passing it through
>> Phobos algorithms generated range of dchar. The thing is, those dchar
>> elements are generated (decoded from chars) "on the fly" as one
>> iterates over the range. Which means, there is no array of dchar to
>> speak of, so there is no random access.
>>
>
> I see. Not what I would have expected, but makes sense for people
> working with UTF-8 strings.
>
> Thanks for the fast answer.
You can use byCodeUnit to turn it back into an indexable range:
auto chunked = buffer.byCodeUnit.chunks(3);
-Steve
More information about the Digitalmars-d-learn
mailing list