Should opIndex take precedence over pointer indexing?

Jonathan M Davis newsgroup.d at jmdavisprog.com
Sat Jun 13 02:35:34 UTC 2020


On Friday, June 12, 2020 5:12:35 PM MDT claptrap via Digitalmars-d-learn 
wrote:
> struct Foo
> {
>      float* what;
>      float opIndex(size_t idx) { return what[idx]; }
> }
>
> Foo* foo;
> float x = foo[idx]; // ***
>
>
> *** <source>(68): Error: cannot implicitly convert expression
> `foo[cast(ulong)idx]` of type `Foo` to `float`
>
> IE, pointer indexing of 'foo' takes precedence over the opIndex
> of foo. Is this expected?

Yes, it's expected behavior. . is the only operator which implicitly
dereferences a pointer.

- Jonathan M Davis





More information about the Digitalmars-d-learn mailing list