Tuple vs TypeTuple в D - PullRequest
       1

Tuple vs TypeTuple в D

6 голосов
/ 19 мая 2011

В чем разница между Tuple и TypeTuple?Я посмотрел пример кода в библиотеке, но они похожи.Как мне решить, какой использовать?и есть ли веская причина, почему Tuple находится в std.typecons, а TypeTuple находится в std.typetuple?

Ответы [ 3 ]

4 голосов
/ 19 мая 2011

A Tuple - это тип данных , состоящий из набора указанных вами полей.

A TypeTuple - это просто «куча вещей», которые знает компилятороколо во время компиляции ;он не существует во время выполнения.

(Вопреки своему названию TypeTuple может содержать в значительной степени что угодно - не только типы!)

3 голосов
/ 19 мая 2011

Tuple - это набор переменных (например, структура), в то время как TypeTuple - это коллекция типов, которую можно использовать при проверке шаблонов.

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

определяет переменную с помощью var.index, int и var.value.настоящий

TypeTuple используется, когда вы хотите проверить, используют ли экземпляры ваших шаблонов правильные типы

3 голосов
/ 19 мая 2011

кортеж стандартный тип нормальный обычный кортеж значений.

typetuple в std.typetuple является кортежем типов. Он может использоваться во время компиляции, как в этом примере функции, где он ограничивает допустимые типы для функции только 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");
}
...