Создание набора типов из списка аргументов шаблона переменной в D
У меня есть шаблонная структура следующей формы:
struct Command(T) {
alias T CommandType;
// ...
}
Кроме того, у меня есть еще одна структура контейнера, которая содержит кучу этих Command
Структуры:
struct CommandList(Command...) {
}
Что я хотел бы сделать, это с помощью шаблонов и / или mixins создать псевдоним TypeTuple в CommandList
который содержит CommandType
s, по порядку, каждого шаблона Command
аргументы. Например, я бы хотел, чтобы что-то подобное произошло:
struct CommandList(Command!int, Command!long, Command!string, Command!float) {
alias TypeTuple!(int, long, string, float) CommandListType; // This would be dynamically generated by templates/mixins...
}
Можно ли это сделать, и если да, то какой подход лучше?
1 ответ
Решение
Делает ли это то, что вам нужно?
import std.typetuple;
struct Command(T) { alias T CommandType; }
template getCommandType(T) { alias T.CommandType getCommandType; }
struct CommandList(Command...) {
alias staticMap!(getCommandType, Command) CommandListType;
}
pragma(msg, CommandList!(Command!int, Command!long).CommandListType);