我有一個模板類接收多種類型,每種類型收到的是兩個選項之一的子類。 我想根據識別每個父類的不同來擴展它們。這相當於在可變參數模板參數上實現「過濾」。如何通過類型派生篩選可變模板包?
例如:
class A{};
class B{};
template<class... C>
struct F{
std::tuple<types_derived_by<A, C>...> fn(types_subclassing<B, C>...){}
};
的types_derived_by模板函數應該產生在C的所有類型的從A衍生,或B.
例如一個可變參數模板包:
struct DA : public A{};
struct DB : public B{};
int main(){
F<DA, DB> f;
//f has a member function: DA fn(DB);
}
我正在使用C++ 11,但如果有必要,我可以移動到C++ 14。
你期望返回類型擴展到什麼?你不能像這樣返回多種類型。也許你想要一個'std :: tuple'? – TartanLlama
是的。元組。我輸錯了 – dvicino
也許,你必須在派生類中聲明一些'typedef ... NearestBase;'來遍歷超類? –