A module comprehensive template-specialization

Simen kjaeraas simen.kjaras at gmail.com
Sun Jun 27 20:32:01 PDT 2010


Matthias Walter <xammy at xammy.homelinux.net> wrote:

> Can I handle this in another way (like making the template a conditional
> one)?

Template constraints[1] sounds like what you want.

Basically, you want the following:

== Module a ==
| module a;
|
| template Base (T) if (!is(T t : t*))
| {
|   alias T Base;
| }

== Module b ==
| module b;
|
| import a;
|
| template Base(T) if (is(T t : t*))
| {
|   alias Base !(T) Base;
| }

== Main module ==
|
|  import a, b;
|
| int main(char[][] args)
| {
|   alias Base !(int*) foo;
|
|   return 0;
| }

Not tested, ymmv.

[1]: http://digitalmars.com/d/2.0/template.html#Constraint

-- 
Simen


More information about the Digitalmars-d-learn mailing list