Рассмотрим следующий фрагмент кода:
template <int... Is>
void foo()
{
([i = Is]{}(), ...);
}
-
clang++
(соединительная линия) успешно компилирует код с помощью-std=c++17
-
g++
(соединительная линия) не скомпилируется со следующей ошибкой:<source>: In function 'void foo()': <source>:4:11: error: parameter packs not expanded with '...': ([i = Is]{}(), ...); ^~ <source>:4:11: note: 'Is' <source>:4:16: error: operand of fold expression has no unexpanded parameter packs ([i = Is]{}(), ...); ~~~~~~~~~~^~
Является ли это g++
ошибкой, или стандарт предотвращает расширение пакета параметров в составе лямбда-интродуктора?