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

            Bug ID: 85646
           Summary: Incorrect lambda visibility with -fvisibility=hidden
           Product: gcc
           Version: 8.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: duarte at scylladb dot com
  Target Milestone: ---

Consider the following program:

template<typename T>
void foo() {
    struct inner {
        inner() {
            (void)([this] { });
        }
    };
}

int main() { foo<int>(); }

Compiles fine on 6.3, but fails on 7.1, 7.2, 7.3, 8.0.1 and 8.1, with 

<source>:5:13: error: 'foo()::inner::inner() [with T = int]::<lambda()>'
declared with greater visibility than the type of its field
'foo()::inner::inner() [with T = int]::<lambda()>::<this capture>'
[-Werror=attributes]

Godbolt: https://godbolt.org/g/aGaVgd

Reply via email to