July 10, 2019
I want to be able to do things like:

---
bool isSame(Object a, Object b) { return a is b; }

interface SomeInterface { int whatever(); }

bool failsToCompile(SomeInterface a, SomeInterface b) { return isSame(a, b); }
---

>Error: function isSame(Object a, Object b) is not callable using argument types (SomeInterface, SomeInterface)

Is there a way to declare an interface as explicitly not a COM interface or a C++ interface? Having to add "cast(Object)" everywhere is annoying.
July 10, 2019
On Wednesday, 10 July 2019 at 08:03:30 UTC, Nathan S. wrote:
> I want to be able to do things like:
>
> ---
> bool isSame(Object a, Object b) { return a is b; }
>
> interface SomeInterface { int whatever(); }
>
> bool failsToCompile(SomeInterface a, SomeInterface b) { return isSame(a, b); }
> ---
>
>>Error: function isSame(Object a, Object b) is not callable using argument types (SomeInterface, SomeInterface)
>
> Is there a way to declare an interface as explicitly not a COM interface or a C++ interface? Having to add "cast(Object)" everywhere is annoying.

Hi, not tested extensively but :

---
interface Foo
{
    final Object asObject()
    {
        return cast(Object) this;
    }

    alias asObject this;
}

class Bar : Foo
{

}

void main(string[] args)
{
    Foo foo = new Bar;
    Object o = foo;
    writeln(o);
}
---