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