Why are void[] contents marked as having pointers?
Vladimir Panteleev
thecybershadow at gmail.com
Fri Jun 5 00:09:49 PDT 2009
On Thu, 04 Jun 2009 21:31:07 +0300, Denis Koroskin <2korden at gmail.com>
wrote:
> On Thu, 04 Jun 2009 22:16:42 +0400, Vladimir Panteleev
> <thecybershadow at gmail.com> wrote:
>
>> On Thu, 04 Jun 2009 05:10:17 +0300, Christopher Wright
>> <dhasenan at gmail.com> wrote:
>>
>>> bearophile wrote:
>>>> Christopher Wright:
>>>>> Another good point. Or how do you index it by byte?
>>>> How can you read & write files of 3 bytes if voids are 4 bytes long
>>>> chunks? :o) I don't understand. I want to read and write files
>>>> byte-by-byte.
>>>> Bye,
>>>> bearophile
>>>
>>> Vladimir was suggesting that void[] be the same as ubyte[] and that
>>> you use void*[] if you might include a pointer. So that use case would
>>> be safe.
>>
>> Actually, I think Andrei's idea is better (to allow implicit casting
>> arrays of non-reference types to const(ubyte)[]). It introduces an
>> abstract no-pointers type, but still allows implicit casting to "might
>> have pointers".
>>
>
> There is a pitfall: should an "arrays of non-reference types" be
> implicitly castable to const(byte)[] or const(ubyte[])[] ?
>
> Should const(byte)[] also be implicitly castable to const(ubyte)[] (or
> vice versa)?
I don't see why you'd want to work with arrays of signed bytes. It doesn't
make sense to allow implicit casting between the two; the programmer
should just pick one and stick with it. I think unsigned makes more sense.
--
Best regards,
Vladimir mailto:thecybershadow at gmail.com
More information about the Digitalmars-d
mailing list