У меня есть функция шаблона, которая принимает переменное количество аргументов. Поскольку вы не можете заставить аргументы быть определенного типа, я хотел бы, по крайней мере, заставить число аргументов не быть выше, чем определенное количество времени для компиляции (например, 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