carbon.templates

このモジュールは、様々なtemplateを提供します。

Members

Aliases

Identity
alias Identity(alias A) = A

自身を返します

Mixin templates

defGlobalVariables
mixin template defGlobalVariables(A...)

大域変数を宣言定義初期化します。

Templates

Lstr
template Lstr(alias str)

式を埋め込み可能な文字列リテラルを構築します

TRIota
template TRIota(size_t a, size_t b)

テンプレート版レンジでの$(D_CODE std.range.iota)です。

TRMap
template TRMap(alias tmpl, alias TR)

テンプレート版レンジでの、$(D_CODE std.algorithm.map)に相当します。

ToTRange
template ToTRange(T...)

タプルをテンプレート版レンジにします。

ToTuple
template ToTuple(alias TR)

テンプレート版レンジからタプルを作ります。

TypeNuple
template TypeNuple(A...)

ある型や値をN個並べたタプルを返します

isEqualTypes
template isEqualTypes(alias A, alias B)
isEqualValues
template isEqualValues(alias A, alias B)

2つのTemplateRangeが等しいかどうか検証します。

isEquals
template isEquals(alias pred, alias A, alias B)

2つのTemplateRangeが等しいかどうか検証します。

Examples

あるテンプレートが、テンプレート版レンジかどうか判定します。

Example:

alias head = tmplt.front;   // 先頭要素
alias tail = tmplt.tail!(); // 残り
1 template number(size_t a, size_t b)
2 if(a <= b)
3 {
4   static if(a == b)
5     enum bool empty = true;
6   else
7   {
8     enum bool empty = false;
9 
10     enum front = a;
11 
12     template tail()
13     {
14         alias tail = number!(a+1, b);
15     }
16   }
17 }
18 
19 static assert(isTemplateRange!(number!(0, 10)));
20 static assert(isTemplateRange!(number!(10, 10)));

Meta