我有一個模板函數,它接受可變數量的參數。既然你不能強制參數是某種類型,我想至少強制參數的數目不要高於編譯時確定的數目(例如10)。限制可變參數模板參數包中參數的數量
如果帶有參數包的模板函數的參數數量高於編譯時間確定值,編譯器是否可以提供錯誤?
template <class ...Args>
void setRequestArguments(const Args&... args)
{
const std::vector<QGenericArgument> vec = { args... };
qDebug() << sizeof...(args);
// Do stuff...
// for (unsigned i = 0; i < vec.size(); ++i) {
// qDebug() << vec[i].name();
// }
}
我想使用它的是一種用於在QMetaObject::invokeMethod
包裝函數的所有參數的通用容器。
可以將參數限制爲某種類型。你想對此做出答案嗎?你是否要求參數完全是'T'還是可以轉換爲'T'的東西? – bolov
@bolov是的,請,這將是非常有用的!我會+1 –
我用這個創建了一個新帖子:http://stackoverflow.com/questions/39659127/restrict-variadic-template-arguments/39659128#39659128 – bolov