https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117536

            Bug ID: 117536
           Summary: -Wshadow generates an incorrect warning with some
                    usages of immediately invoked lambdas
           Product: gcc
           Version: 14.2.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: justus at opentransactions dot org
  Target Milestone: ---

struct my_type {};
my_type get_value();
void init_value(my_type&);

int main()
{
    const auto my_var = [] {
        auto my_var = get_value();
        init_value(my_var);

        return my_var;
    }();

    return 0;
}

<source>: In lambda function:
<source>:9:14: error: declaration of 'my_var' shadows a previous local
[-Werror=shadow]
    9 |         auto my_var = get_value();
      |              ^~~~~~


This is a bogus warning because neither usage of my_var is in scope at the same
time.

The scope for the other my_var doesn't begin until the scope of all the
variables in the immediately-invoked lambda ends.

Reply via email to