Template Functions

Part of TemplatesCategory

Description

Collections are just way to much fun to putter around with.

Here's an example that results in calls that look like

 TmixCollectionTypes!(Object,String).addAll(foo,bar);

when you want to copy from one contained type to another.

Example

interface Collection(T) { // a cheesy Collection
    T getItem();
    void addItem(T x);
}

template TmixCollectionTypes(S,T) {
    void addAll(Collection!(S) x, Collection!(T) y) {
        x.addItem(y.getItem()); // you get the idea...

  }
}

class LinkedList(T): Collection!(T) { // a cheesy list
    T getItem() { return item; }
    void addItem(T x) { item=x; }
    T item;
}

class String {}

int main(char[][] argv)
{
    Collection!(Object) foo = new LinkedList!(Object);
    Collection!(String) bar = new LinkedList!(String);
    TmixCollectionTypes!(Object,String).addAll(foo,bar);
    return 0;
}

Source

From D:24532 by Ben Hinkle.