1

我有以下形式的模板结构:

struct Command(T) {
    alias T CommandType;
    // ...
}

此外,我还有另一个包含这些结构的容器Command结构:

struct CommandList(Command...) {
}

我想做的是,通过模板和/或 mixins,创建一个 TypeTuple 别名,CommandList其中CommandType按顺序包含每个模板Command参数的 s。例如,我希望发生这样的事情:

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...
}

这有可能吗,如果可以,最好的方法是什么?

4

1 回答 1

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);
于 2011-10-30T22:42:39.857 回答