Should opIndex completely override alias this?

Mehrdad wfunction at hotmail.com
Fri May 11 10:47:13 PDT 2012


On Friday, 11 May 2012 at 17:37:11 UTC, Artur Skawina wrote:
> On 05/11/12 19:22, Mehrdad wrote:
>> On Friday, 11 May 2012 at 17:19:28 UTC, kenji hara wrote:
>>> This is expected behavior.
>>>
>>> 'alias this' works as proper super type.
>>>
>>> struct S { T[] data; alias data this; }
>>>
>>> In this code, S behaves as it is derived from T[] .
>>>
>>> Following to this view, the definition of opIndex in S 
>>> overrides (and
>>> hides) T[]'s opIndex completely.
>>>
>>> Kenji Hara
>> 
>> How do you overcome this, in the case where you don't know the 
>> data type of 'data' (so you don't know what the overloads 
>> might look like, maybe because it's a template)?
>
> Not quite sure what you mean, but
>
>     auto opIndex(A...)(A a) { return data[a]; }
>
> artur

What if it's const/pure/@safe/whatever though? Or the parameters 
have some attributes?

(I guess this is a more general problem than opIndex 
specifically, though.)


More information about the Digitalmars-d mailing list