Просто интересно, почему это недействителен:Почему этот вариационный шаблон является ошибкой?
#include <iostream>
template <std::size_t... Is>
void foo(Is&&... args) {
std::cout << "foo called with " << sizeof...(Is) << "params\n";
}
int main() {
foo(1, 2, 3, 4);
}
кажется вполне разумным пример, но он fails на любой компилятор я могу получить мои руки.
Если я использую size_t
для class
, то пример работает так, как ожидалось. Я также попытался использовать новый параметр шаблона auto
, но ни один онлайн-компилятор не принял это, поэтому я не знаю, является ли это недопустимым вариантом использования или проблемой соответствия.
'Is' не является типом. Это значение 'size_t'. – NathanOliver
Вы никогда не напишете 'void foo (1 a, 2 b, 3 c, ...)', так зачем писать 'void foo (Is ...)'? ;) – Holt
@BaummitAugen, что целевая доза не подходит правильно – NathanOliver