D中的元组与TypeTuple

时间:2011-05-19 16:31:32

标签: d

Tuple和TypeTuple有什么区别?我查看了库中的示例代码,但它们看起来很相似。我该如何决定使用哪个?有没有一个很好的理由为什么Tuple在std.typecons但TypeTuple在std.typetuple?

3 个答案:

答案 0 :(得分:4)

Tuple数据类型,由您指定的字段集合组成。

TypeTuple只是编译器在编译时了解的“一堆东西”;它在运行时没有存在。

(与其名称相反,TypeTuple可以容纳任何 - 而不仅仅是类型!)

答案 1 :(得分:3)

元组std.typecons正常的普通元组值。

std.typetuple中的

typetuple是类型的元组。它可以在编译时使用,就像在这个示例函数中一样,它将funciton的允许类型限制为int,long和double。

void foo (T) (T arg) {
    static assert staticIndexOf!(T,TypeTuple!(int, long, double)) != -1, 
        T.stringof ~" is not allowed as argument for foo");
}

答案 2 :(得分:3)

Tuple是变量的集合(如结构),而TypeTuple是可以在模板检查中使用的类型集合

Tuple!(int,"index",real,"value") var;

定义一个变量,var.index为int,var.value为真实

当您想要检查模板的实例化是否使用正确的类型时,会使用TypeTuple