Why toUTF8 not accept wchar[] as argument?

bauss jj_1337 at live.dk
Tue Apr 3 04:52:02 UTC 2018


On Tuesday, 3 April 2018 at 02:46:51 UTC, Domain wrote:
> On Tuesday, 3 April 2018 at 02:31:15 UTC, Uknown wrote:
>> On Tuesday, 3 April 2018 at 02:24:08 UTC, Domain wrote:
>>> wchar[10] buffer;
>>> toUTF8(buffer);
>>>
>>> Error: template `std.utf.toUTF8` cannot deduce function from 
>>> argument types `!()(wchar[10])`, candidates are:
>>> /dlang/dmd/linux/bin64/../../src/phobos/std/utf.d(2713):
>>>  `std.utf.toUTF8(S)(S s) if (isInputRange!S && !isInfinite!S 
>>> && isSomeChar!(ElementEncodingType!S))`
>>>
>>>
>>> I know buffer.idup is OK. But why? That's very inconvenient.
>>
>> What you need to do is slice your buffer. So your call will 
>> become like this:
>>
>> ---
>> toUTF8(buffer[]);
>> ---
>>
>> Now it will work as expected.
>
> I see. Maybe the error message could be improved.

Well depends. The error message is correct and if you took a look 
at each constraint you'd understand it.

Once you understand that static arrays don't work with functions 
expecting ranges, then it kinda becomes common sense as to why it 
doesn't work.


More information about the Digitalmars-d-learn mailing list