<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/63020>63020</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Clang rejects valid code when [[clang::exclude_from_explicit_instantiation]] is used on function-local classes
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang:frontend,
            rejects-valid
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          philnik777
      </td>
    </tr>
</table>

<pre>
    Clang complains that `result` is not a member for class `_MoveSegment` for this code, which is obviously wrong:

```
template <class> void func() {
  struct _MoveSegment {
    int result;

 [[clang::exclude_from_explicit_instantiation]] void member() { result; }
 };

  [](auto v) { v.member(); }(_MoveSegment{});
}

int main(int, char **) { func<int>(); }
```
([Godbolt](https://godbolt.org/z/ddvW68WGh))
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJykU01vqzoQ_TXDZpQIhvCRBYsmNF291Vt0GRnsgN8zdmQb2t5ff2WTKGl1d1eyjPDMnHN8xsOck4MWooHiAEWbsNmPxjbXUSot_6-qKukM_2qOiukBezNdFZPaoR-ZRyhTK9ysPJQpSofaeGQ4iakTFi_GYq-YcyHt_I9ZxL9imISOySHoR-mwN1wAHfFjlP0YMEy3SDM79YUf1ugB8hdIW0jve5neVvz1IujxAiE_Ri7IX3ExkuNl1j1QDbRHqA5rNqLzdu49Pqt5DiNK7fF2pfzwTIzRnkMfbAia8hfx2auZi_PFmuksPq9K9tKfpXaeaS-Zl0ZD0ULRroJWVx6SHjQIVXsnqdqfvCtxC1Sz2Rtc7uXL9hnxDkP1N6erQzzcP0DvVOserjsxqYFqqX3oQz8yi0Avca1M0cr8GBLy1-90f-pJyCgOb4Z3RvlV-ej91QXX6AR0GtbQ1tgB6PQL6MT58l7W729jgKZ9wpuc7_M9S0STlXWxq6pdVSRjw3c8o71I66zvsoKqjqgrq13eZYJK6upENpRSnhZ5SmmWZcWWWFXyMr3UXdaxfXWBXSomJtVWqWUKChLp3CyaMlQkinVCuTgJRPdWX6zRXmgOREBHILLiP9F7t1mYkvG0aBPbBMBNNw8OdqmSzrsHhZdeidsE3YoxFsfXjx-j0H_zvKTD2QmORsdWhchGmZ6pdfyES2armh89kH6cu21vJqBTEHr7bK7WBIFAp2iMAzpFb34HAAD___ajQlE">