1

次の形式のテンプレート化された構造体があります。

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

さらに、これらの構造体の束を保持する別のコンテナー構造体がありますCommand

struct CommandList(Command...) {
}

私がやりたいのは、テンプレートやミックスインを介して、各テンプレート引数の s を順番CommandListに含むTypeTuple エイリアスを作成することです。たとえば、私はこのようなことが起こることを望みます:CommandTypeCommand

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 に答える