Minor issue - zero-length fixed size arrays in variable-sized structs..
Jarrett Billingsley
jarrett.billingsley at gmail.com
Thu Jul 9 06:47:44 PDT 2009
On Thu, Jul 9, 2009 at 2:38 AM, Daniel Keep<daniel.keep.lists at gmail.com> wrote:
>
> You'd have to be mad to use it like that.
>
> struct S
> {
> int a;
> private { size_t size; char[0] data; }
> char[] message() { return data.ptr[0..length]; }
> size_t length() { return size; }
>
> S* opCall(size_t size)
> {
> return cast(S*)((new ubyte[S.sizeof+size]).ptr);
> }
> }
>
> void main()
> {
> auto s = S(5);
> s.message[] = "hello";
> writeln(s.message);
> s.message[] = "world";
> writeln(s.message);
> }
>
You can't. The rest of my post explains that T[0].ptr is always null,
for some reason.
Currently I'm doing almost the same thing, though (cast(char*)(this +
1)[0 .. size]).
More information about the Digitalmars-d
mailing list