Casting between char[]/wchar[]/dchar[]
Walter Bright
newshound at digitalmars.com
Sat Aug 5 12:28:17 PDT 2006
kris wrote:
> Hasan Aljudy wrote:
>> What are the rules for implicit/explicit casting between char[] and
>> wchar[] and dchar[] ?
>>
>> When one casts (explicitly or implicitly) does the compiler
>> automatically invoke std.utf.toUTF*()?
>>
>> Here's an idea that should simplify much of string handling in D:
>> allow char[] and wchar[] and dchar[] to be castable implicitly to each
>> other, provided that the compiler invokes the appropriate
>> std.utf.toUTF* method.
>> I think this is perfectly safe; no data is lost, and string handling
>> can become much more flexable.
>>
>> Instead of writing three version of the same funciton for each of
>> char[] wchar[] and dchar[], one can just write a wchar[] version (for
>> example) and the compiler will handle the conversion from/to char[]
>> and dchar[].
>>
>> This is also relevies developers from writing templetized
>> functions/class when they deal with strings.
>>
>> Thoughts?
>
> This one was beaten soundly around the head & shoulders in the past :)
>
> In a systems language like D, one could argue that hidden conversions
> and/or translations (a) can mask what would otherwise be unintended
> compile-time errors (b) can be terribly detrimental to performance where
> multiple conversions are implicitly applied. Such an environment could
> potentially put C0W to shame in terms of heap abuse -- recall some of
> the recent CoW examples, and sprinkle in a few unintended conversions
> for good measure :)
>
> IIRC, the last time this came up there was a pretty strong feeling that
> such things should be explicit (partly because it can be an expensive
> operation ~ likely sucking on the heap also).
Yes. It's hard to judge where the line is, but too many implicit
conversions leads to very hard to understand/debug programs.
> Although foreach() will
> convert on the fly, that's perhaps not something one should do with
> extensive chunks of text?
foreach also doesn't consume memory for the conversion.
More information about the Digitalmars-d
mailing list