因此,假設我有一個類,它包含功能對象,並在構造函數調用中傳遞參數,它將在某個時間傳遞給功能對象後來。喜歡的東西:Variadic模板 - 我如何創建類型,存儲傳遞的參數
class Binder{
public:
Binder(functional_object, listOfParameters);
callFunctionalObject(); // calls functional object with given list of parameters
};
之前C++ 11我無法使用可變參數模板,所以一個會做:
struct none{};
template <typename T1, typename T2=none, typename T3=none>
class Binder{
public:
Binder(T1 functionalObject, T2 arg1=none(), T3arg3=none());
void callFunctionalObject();
private:
T1 m_functionalObject;
T2 m_arg1;
T3 m_arg2;
};
凡callFunctionalobject
可以實現如下:
template<typename T1, typename T2, typename T3>
void Binder<T1,T2,T3>::callFunctionalObject(){
callImpl(m_functionalObject, m_arg1, m_arg2);
}
和callImpl
將被重載以識別類型爲none
的對象以將適量的參數傳遞給功能對象。
現在切換到C++ 11我不知道如何實現這一事實,在私人部分我有成員,我可以直接訪問。
任何人都可以解釋我的方式,我可以使用C++ 11或C++ 14做同樣的事情嗎?
我想到了這樣的事情,但不會functionalObject然後在參數代替參數正常名單得到一個touple? – DawidPi
解壓縮tuple參數需要一點點工作,試圖爲您獲得實時代碼解決方案:) – coincoin
@DawidPi更新了一個C++ 14解決方案,使用'std :: index_sequence' – coincoin