This is the general outline of what I'm trying to do:



import std.typecons; //wrap

import std.stdio;


interface FooBar
{
public:
        void foo();
        void bar();

        final void both() // NVI
                {
                        foo();
                        bar();
                }
}

class Baz
{
public:
        void foo() { writeln("foo"); }
        void bar() { writeln("bar"); }
}

void main()
{
        auto baz = new Baz();
        auto foobar = baz.wrap!(FooBar)();
        // causes this wall-o-text error -- http://pastebin.com/Pa5dHQtN
        // Which at the end says:

// /usr/local/Cellar/dmd/2.064.2/import/std/typecons.d(2779): Error: static assert "Source Baz does not have structural conformance to (FooBar)"

}


I'm still learning D, but this seems like it should work. If I explicitly implement FooBar in Baz, everything's groovy, but this isn't. Is this a bug in wrap or am I misunderstanding the intention of wrap or NVI?

Also as a side note, if I use an abstract class instead of an interface, things explode in similarly large wall-o-text fashion. Is there a reason for abstract classes aren't or can't be used for wrap?

Reply via email to