223
|
1 /*
|
|
2 Thor - D Metaprogramming Library
|
|
3 version zero
|
|
4 (c) 2004-2005 Aleksey Bobnev
|
|
5
|
|
6 Public Domain
|
|
7
|
|
8 Thanks go to:
|
|
9 Andrei Alexandrescu - for admirable book "Modern C++ Design" and Loki library
|
|
10 Andy Friesen - for apropos library, which actually pioneered meta-programming in D
|
|
11 */
|
|
12 /+module Thor.meta;+/
|
|
13 module addon.template_10_meta;
|
|
14
|
|
15 class NullT
|
|
16 {
|
|
17 }
|
|
18
|
|
19 template Equal(T0,T1)
|
|
20 {
|
|
21 const bool Equal = false;
|
|
22 }
|
|
23
|
|
24 template Equal(T0,T1 : T0)
|
|
25 {
|
|
26 const bool Equal = true;
|
|
27 }
|
|
28
|
|
29 template SelectType(bool c, T0,T1)
|
|
30 {
|
|
31 alias T0 SelectType;
|
|
32 }
|
|
33
|
|
34 template SelectType(bool c : false, T0,T1)
|
|
35 {
|
|
36 alias T1 SelectType;
|
|
37 }
|
|
38
|
|
39 template SelectAlias(bool c, alias T0,alias T1)
|
|
40 {
|
|
41 alias T0 SelectAlias;
|
|
42 }
|
|
43
|
|
44 template SelectAlias(bool c : false, alias T0, alias T1)
|
|
45 {
|
|
46 alias T1 SelectAlias;
|
|
47 } |