Restriction on interface function types

monarch_dodra monarchdodra at gmail.com
Wed Mar 12 07:54:21 PDT 2014


On Wednesday, 12 March 2014 at 13:55:35 UTC, Steven Schveighoffer 
wrote:
> On Wed, 12 Mar 2014 09:51:32 -0400, monarch_dodra 
> <monarchdodra at gmail.com> wrote:
>
>> On Wednesday, 12 March 2014 at 13:34:33 UTC, Steve Teale wrote:
>
>>> void main()
>>> {
>>>   I[] arr = [new A, new B];
>>>   foreach(i; arr) { (cast(typeof(i.myType()) i).foo() }
>>> }
>>>
>>> myType() is a virtual function, so calling it through the 
>>> interface type should get the correct version right?, and 
>>> then the cast should cause a call to A or B.
>>
>> It will *call* the correct version, but the signature used 
>> will still statically be the interface's signature.
>
> There is no foo in the interface definition.

I meant call relative to "myType()". I can see how that was not 
clear actually. Sorry.

> The code is invalid, as is the idea you can declare variables 
> based on a runtime type definition.

Yup.


More information about the Digitalmars-d mailing list