Рассмотрите этот фрагмент кода:
int main () {
auto first = [&] (auto... one) {
auto faulty = [&] () {
[[maybe_unused]] auto i = (one + ...);
return (one + ...);
};
faulty();
};
first(1);
}
См. Также на godbolt .
Кажется, что когда я пытаюсь развернуть неявно захваченный пакет параметров one
дважды внутри внутренней лямбды gcc жалуется, а лязг нет.Обратите внимание, что когда я явно фиксирую, например, [&one...]
, gcc больше не жалуется.
Для меня это похоже на ошибку gcc, но я хотел бы получить подтверждение от людей, которые более опытны, чем я,так как я уже видел (различное) ошибочное поведение в clang с вариационными захватами здесь .