On Wed, 12 Mar 2014 09:51:32 -0400, monarch_dodra <[email protected]> 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. The code is invalid, as is the idea you can declare variables based on a runtime type definition.

-Steve

Reply via email to