Welcome to Web-News
A Web-based News Reader
Subject Re: Recursive Templates
From Koroskin Denis <2korden@gmail.com>
Date Sat, 09 Aug 2008 22:00:25 +0400
Newsgroups digitalmars.D

On Sat, 09 Aug 2008 21:40:24 +0400, llee <llee@goucher.edu> wrote:

> I'm working on a set library that uses templates. The library centers  
> around a class named Set. This class contains an array named elems that  
> stores the set's elements. The definition for set is as follows:
>
>      class Set (T) { ... T[] elems; ... }
>
> To calculate the cartesian product of two sets, I need to be able to  
> represent higher order sets. I tried defining a function with the  
> following signiture:
>
>      static Set! (Set! (T)) product (Set! (T) a, Set! (T) b);
>
> Unfortunately, the dmd compiler throws an error stating that It does no  
> allow recursive elements.
>
> Does anyone know how to work around this problem?
>

Can't confirm. The following code works:

class Set (T) {
        T[] elems;
}

Set!(Set!(T)) product(T)(Set!(T) a, Set!(T) b)
{
        Set!(Set!(T)) r = null;
        // do something
        return r;
}

void main()
{
        auto t = new Set!(int);
        auto s = product(t, t);
}

Recent messages in this thread
 
-# Recursive Templates llee 09-Aug-2008 01:40 pm
.\# Re: Recursive Templates (Current message) Koroskin Denis 09-Aug-2008 02:00 pm