Recursive mixins problem
Max Samukha
samukha at voliacable.com
Mon Apr 9 23:41:28 PDT 2007
On Sat, 07 Apr 2007 16:55:16 +0300, Max Samukha
<samukha at voliacable.com> wrote:
>Why recursive mixins are disallowed?
>
>template Call(A...)
>{
> static if (A.length > 0)
> {
> void call(A[0] fn)
> {
> }
>
> mixin Call!(A[1..$]);
> }
>}
>
>class Caller(A...)
>{
> mixin Call!(A);
>}
>
>void main()
>{
> auto caller = new Caller!(int delegate(), char[] delegate());
>}
>
>hello.d(15): mixin hello.Caller!(int delegate(),char[]
>delegate()).Caller.Call!(int delegate(),char[]
>delegate()).Call!(char[] delegate()).Call!() recursive mixin
>instantiation
>hello.d(26): template instance hello.Caller!(int delegate(),char[]
>delegate()) error instantiating
>
>
>
>
>
In the example above, char[] delegate() should be replaced with
something like int delegate(char[]) for proper function overloading.
Anyway, the problem remains. Is it a bug or temporary restriction? If
not, should a note be added to the specs?
More information about the Digitalmars-d-learn
mailing list