我可以創建一個模板類,它將某些值存儲在屬性中,並讓我稍後調用一個使用此參數調用函數的方法。像這樣:可變參數模板類用於對可變參數模板函數進行延期調用
template <typename U> void g(U u) { cout << u << endl; }
template <typename U> class C {
public:
U u;
C(U u) { this->u = u; }
void m() { g(u); }
};
int main() {
C<double> c(5.5);
c.m();
}
但是如何使可變參數模板相同?我想編寫類似:
template <typename ... T> void f(T... a) { cout << "generik" << endl; }
template <typename ... T> class B {
public:
T... arg;
B(T... arg) {
this->arg = arg;
}
void m() { f(arg); }
};
int main() {
B<int,double> b(1,1.1);
b.m();
}
我知道,這將無法工作,因爲我們不能宣佈解壓參數類型的成員。
我可以爲列表中的某些參數做模式匹配,然後在給定給定數量的參數的情況下調用該函數,但我想以通用方式執行此操作。有沒有一種優雅的方式來做到這一點?
使用'的std :: tuple' – 2014-12-03 20:14:40
你的第一個例子未能完全向前爲好。你是否打算不止一次地叫'm'?也許只有'&&'超負荷才能完美向前... – Yakk 2014-12-03 20:17:25
這不是重點,但謝謝。 – 2014-12-03 21:06:46