You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
DMD64 D Compiler v2.071.2-b2 on Debian 6.
This code doesn't compile:
import std.typecons;alias RIA = Rebindable!(immutable(IA));interface IA { Rebindable!(immutable(IA)) f();}
./testinterface.d(7): Error: Rebindable!(immutable(IA)) is used as a type
/usr/include/dmd/phobos/std/typecons.d(1616): Error: template instance std.traits.isDynamicArray!(immutable(IA)) error instantiating
./testinterface.d(5): instantiated from here: Rebindable!(immutable(IA))
/usr/include/dmd/phobos/std/typecons.d(1625): Error: mixin std.typecons.RebindableCommon!(immutable(IA), IA, Rebindable) does not match template declaration RebindableCommon(T, U, alias This) if (is(T == class) || is(T == interface) || isAssociativeArray!T)
Failed: ["dmd", "-v", "-o-", "./testinterface.d", "-I."]===================================================================
Here are 3 variants of the above code. All compile and run perfectly.
import std.typecons;alias REmpty = Rebindable!(immutable(Empty));interface Empty { }interface IA { Rebindable!(immutable(IA)) f();}alias RIA = Rebindable!(immutable(IA));class B { Rebindable!(immutable(B)) f() { return rebindable(new immutable B()); }}alias RB = Rebindable!(immutable(B));
The text was updated successfully, but these errors were encountered:
Simon Naarmann (@SimonN) reported this on 2016-08-25T09:43:01Z
Transferred from https://issues.dlang.org/show_bug.cgi?id=16427
CC List
Description
DMD64 D Compiler v2.071.2-b2 on Debian 6. This code doesn't compile: import std.typecons; alias RIA = Rebindable!(immutable(IA)); interface IA { Rebindable!(immutable(IA)) f(); } ./testinterface.d(7): Error: Rebindable!(immutable(IA)) is used as a type /usr/include/dmd/phobos/std/typecons.d(1616): Error: template instance std.traits.isDynamicArray!(immutable(IA)) error instantiating ./testinterface.d(5): instantiated from here: Rebindable!(immutable(IA)) /usr/include/dmd/phobos/std/typecons.d(1625): Error: mixin std.typecons.RebindableCommon!(immutable(IA), IA, Rebindable) does not match template declaration RebindableCommon(T, U, alias This) if (is(T == class) || is(T == interface) || isAssociativeArray!T) Failed: ["dmd", "-v", "-o-", "./testinterface.d", "-I."] =================================================================== Here are 3 variants of the above code. All compile and run perfectly. import std.typecons; alias REmpty = Rebindable!(immutable(Empty)); interface Empty { } interface IA { Rebindable!(immutable(IA)) f(); } alias RIA = Rebindable!(immutable(IA)); class B { Rebindable!(immutable(B)) f() { return rebindable(new immutable B()); } } alias RB = Rebindable!(immutable(B));The text was updated successfully, but these errors were encountered: