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