Recursive Templates
Koroskin Denis
2korden at gmail.com
Sat Aug 9 11:00:25 PDT 2008
On Sat, 09 Aug 2008 21:40:24 +0400, llee <llee at 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);
}
More information about the Digitalmars-d
mailing list