2011-10-30 67 views
1

我有以下形式的模板結構:創建從一個可變參數模板參數列表中d一typetuple

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

另外,我有上也有不少這些Command結構的另一個容器結構:

struct CommandList(Command...) { 
} 

我想要做的是,通過模板和/或混入,創建一個CommandList別名TypeTuple含有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); 
+0

這樣做,非常感謝! –

相關問題