Zero-length static array spec

Iain Buclaw via Digitalmars-d digitalmars-d at puremagic.com
Sat Feb 7 16:51:11 PST 2015


On 7 February 2015 at 22:45, David Nadlinger via Digitalmars-d
<digitalmars-d at puremagic.com> wrote:
> On Saturday, 7 February 2015 at 15:04:52 UTC, Iain Buclaw wrote:
>>
>> a0.ptr == a1.ptr  // false, enforced by compiler. Comparison not actually
>> emitted.
>
>
> I don't think that's a viable option. It would lead to completely
> unintuitive behavior like the following:
>
> ---
> bool isEqual(T)(T a, T b) { return a == b; }
>
> int[0] a0;
> int[1] a1;
>
> assert(a0.ptr != a1.ptr);
> assert(isEqual(a0.ptr, a1.ptr));
> ---
>

You should be able to solve this in the compiler.  For instance, can
you define an array type to having a non-fixed size?

Check if you can do something in terms of:
---
int[1] a1;
int[0:18446744073709551615] a0;  // size_t.max
---

Iain.


More information about the Digitalmars-d mailing list