我有一個類Foo
需要有可變數量的模板參數,但這些參數需要是某種泛型類型,而不是完全任意的。例如變量模板部分特化類限制模板參數的類型
template < int I, typename T> struct Arg;
using type1 = Foo<Arg<3, double>>;
using type2 = Foo<Arg<1, int>, Arg<7, float>, Arg<1, int>>;
我想知道什麼是最好的方式來實現這一點。我想我需要用一個簡單的可變參數模板第一次啓動
template < typename ...T >
class Foo;
從那裏,我可以按照遞歸路
template < int I, typename T, typename ...Others>
template Foo<Arg<I, T>, Others...>
{
...
};
但this answer另一個問題讀給我留下想知道我的知識可變參數模板以及如何遞歸有時可以避免。
我的問題是,這是否模板參數預計將在一個相對剛性的格式事實啓用Foo
部分專業化這不會是遞歸的,這將有效地處理所有Foo
S中的形式Foo<Arg<...>,Arg<...>,...>
的?
人們仍然可以將參數放在一個元組中,並在需要時訪問它們,所以我不會說它們很難使用。簡單地添加N並輸入到'Arg'來輸出它們。 – skypjack