#include <iostream>
using namespace std;
int print(int i)
{
cout<<endl<<i;
}
template<typename ...Args>
inline void pass(Args&&...args)
{
}
template<typename ...args>
inline void expand(args&&... a)
{
print(a) ...; //this doesn't expand
//pass(print(a)...); this works
}
int main() {
expand(1,2,3,4);
return 0;
}
Он бросает ошибку:параметр пакеты не расширен с «...»
In function 'void expand(args&& ...)':
error: expected ';' before '...' token
print(a) ...;
^
parameter packs not expanded with '...':
print(a) ...;
^
Почему использование этой функции „PASS“ необходимо?
параметров пакета допускается в основном, где разделенный запятыми список допускается. Существует фиксированное количество контекстов: списки параметров функций, списки параметров шаблонов, инициализаторы и т. Д. Выражение не является допустимым контекстом. Оператор запятой не делает список, разделенный запятыми. –
Если SO просит вас добавить более подробную информацию, добавьте более подробную информацию. Не фиктивный текст. Благодарю. –