我正在寫一些代碼,我有一個類可以接受mixin作爲可變參數的模板。但是,我還需要mixin能夠通過CRTP慣用語訪問基類。這裏有一個小例子,是不能完全做到我想要的東西:廣義Mixins
template <template <class> class... Mixins>
class Foo : Mixins<Foo<Mixins...>>... {};
不過,我可能會傳遞給Foo
一個mixin會,在一般情況下,有幾個模板參數,就像這樣:
template <class Derived, class Type1, class Type2>
class Bar
{
Derived& operator()()
{
return static_cast<Derived&>(*this);
}
};
如何我可以更改Foo
,以便我可以從多個基類繼承它,我控制每個基類接受的模板參數?如果我遞模板模板參數的列表以及傳遞給它們的參數列表,那麼我就不會看到如何將每個模板參數與它的參數關聯起來。到目前爲止,我想到了這樣的事情,但我不知道我會如何繼續。
template <template <class...> class T,
template <class...> class... Ts>
class Foo : /* How do I retrieve the arguments? */
這顯然是最優雅的解決方案;對不起,如果我的問題有點含糊不清。 – 2012-02-19 19:56:06
@ void-pointer:我不一定會說模棱兩可,有幾層需要挖掘,所以我想最好清楚地表達我正在試圖解決的問題,這樣如果我朝錯誤的方向前進,就可以糾正我的問題:) – 2012-02-19 20:09:01