Hello,

here is a program stripped down to the minimum code that doesn't compile

----
import std.typecons;

Rebindable!(immutable TestImpl) Test;

Rebindable!(immutable TestImpl) Test;

class TestImpl
{
    void foo() {}
Test test() { __gshared x = new immutable TestImpl; return rebindable(x); }
}

void main()
{
    Test t = Test.test;
}

void main()
{
    Test t = Test.test;
}
----

source/app.d(32,10): Error: circular reference to 'app.Test'
source/app.d(32,10): Error: Test is used as a type
/usr/include/dmd/phobos/std/typecons.d(1616,20): Error: template instance std.traits.isDynamicArray!(immutable(TestImpl)) error instantiating source/app.d(27,1): instantiated from here: Rebindable!(immutable(TestImpl)) /usr/include/dmd/phobos/std/typecons.d(1625,17): Error: mixin std.typecons.RebindableCommon!(immutable(TestImpl), TestImpl, Rebindable) does not match template declaration RebindableCommon(T, U, alias This) if (is(T == class) || is(T == interface) || isAssociativeArray!T)


Reply via email to