我目前正試圖讓我的頭可以用variadic模板支持來做一些事情。比方說,我有這樣的功能 -已知類型的C++可變參數函數模板
template <typename ... Args>
void foo(Args ... a)
{
int len = sizeof...(tail);
int vals[] = {a...};
/* Rest of function */
}
/* Elsewhere */
foo(1, 2, 3, 4);
此代碼的工作,因爲我事先假設的爭論將是整數,但很明顯,如果我提供別的東西將失敗。如果我知道的參數包將包含在事先特定的類型,有一些方法,我可以不用模板,並有一些像 -
void foo(int ... a)
我試圖這樣做,但是編譯器給了一個錯誤關於foo是一個無效的領域。我知道我也可以通過遞歸訪問包中的參數,但我不確定這會解決我所遇到的問題 - 也就是說,我希望能夠獲取可變數目的相同類型的參數。
你可以用'enable_if',以確保所有類型的*是*整數。 –
如果你潛入一堆整數,代碼將起作用。如果你給它別的東西,它不起作用。看起來任務完成。哪裏有問題? –
我想問題是在編譯時是否可以確保它們是整數。 – znby