gcc vs clang: расширение пакета захваченных параметров в два раза - PullRequest
4 голосов
/ 02 июня 2019

Рассмотрите этот фрагмент кода:

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 с вариационными захватами здесь .

1 Ответ

1 голос
/ 02 июня 2019

Это регрессия в GCC 9. Сообщено .

GCC 8 компилирует код отлично .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...