<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=http://email.email.llvm.org/c/eJztWEtv2zgQ_jXyhZAhUX7EBx0ce33rpmi854IixzI3lCjw0ST765ek6FfitHV7SFDYGFgiZzjPjyOJlWTPJRWkrdN8lBTzJFsm2Xy9BbSRQshH3taISgbokQuBKkANMXQLDFXPKJlkK9tSw2W7BCr8GBnpL7IDRYxUSbFIimVS_OVZpGWnvKWnSdabjP9u2FMYaqMsNWgN2ixhQ6wwd3H1HCXT214IId4aRPx46lSezFYvZne8jeLg3CHW-fvaWXxDZavfsosnCV6gH0nMUCvhiUJnkNOKWC90cOTYqdOgDyVgUNk-_fvKnF2BkDbMixRz6VLmaub-gTRI66N8aI1CiAvnII7Z_2g0XrTBufNOt6QJmcB4N7lKXb1qMH87zlzfh9hd-Xz6j2L9vlaukfwGSkjCHK4PaPCFPDXE9d1ecFfuX7DmUWeeuxehJDh3NF9fpMq2zhVLgZ1PyxcwVrVrbyu42Qfxz27RgXGR0Yjls0a5Xu65F2qOTn19nZpdOL7LEAXsZVhDx_ul6u8U30urKHxxXfBI4y3UvI3Dzqk2a7k38fnzycpPpCU1RCx4ipbc76fDf__N93M7UohvTew11ujTdGs9dJ0npuG77U2FEmqkZQNm658ygj_8oM29fzLOUvAttqbXz5LAfbvF5HuBo65wmDze39l-9ngDRtkXm8cr6xlLn9PxwtEKqgr620epHnRHaBz6kqadkv8CNf1MZblg_a2RUuj-NrwnvJqFJ6NInHWPwyPR1HD2HMdboA-g4pI7azobJRv3eFMt_w9SqyF1qrhwcEh7gKQ-npQ-PeFsSLtuaJrOX11MM4fJefHxgfH-blxBewXtnwzaA-tCxGa_jdivtw5RV8h-BFi8vxtXyF4hexlkT19vB6ws2KyYkYEr-FaqMlRlYJUot8Z0OnwTrRzV3GxtNaSycYPwOt5f9nXCK661BfdyvhoXY4wH25JhWhWEMTzLZ5M8q_JqxsbTDR1NNnhWkNFAkAqELpPxrf_QhkcUVITPluXg9z3gJc6woyzPcX6Di-EEF1l1U9GKwnSKySgZZdC4Ag-9nqFU9UCVQWVla-2YgmujD0yiNa9bgOCw89BwI6A_yEInh1Lz-3X6KZxZqXh2pd8-odJnD6gGIZYyBPI_vagfNw>53522</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            clang FunctionDecl AST-Matcher matches `operator<=>` as `operator==`
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    clang-14:
The following code will be matched by `FunctionDecl ` to `operator<=>` and `operator==`

```
struct TestDefaultOperatorA {
  int a{};
  int b{};

  friend auto operator<=>(const TestDefaultOperatorA &, const TestDefaultOperatorA &) noexcept = default;
};
```

The debug code:

```
  std::ostringstream ss;
  ss << "==================================================\n";
  ss << "name:" << F->getNameAsString() << "\n";
  ss << "is overloaded operator: " << F->isOverloadedOperator() << "\n";
  ss << "is autotype:" << !!AT << "\n";
  ss << "is undeduced:" << F->getReturnType()->isUndeducedType() << "\n";
  ss << "is defaulted:" << F->isDefaulted() << "\n";
  ss << "deduced_type:" << F->getDeclaredReturnType().getAsString() << "\n";
  ss << F->getSourceRange().getBegin().printToString(PP->getSourceManager())
     << "\n";
  ss << "==================================================\n";
  llvm::outs() << ss.str();
```

returns something like:

```
==================================================
name:operator<=>
is overloaded operator: 1
is autotype:1
is undeduced:0
is defaulted:1
deduced_type:auto
D:\\Febbe\\workspace\\llvm-project\\build\\tools\\clang\\tools\\extra\\test\\clang-tidy\\checkers\\Output\\modernize-use-trailing-return-type-cxx20.cpp.tmp.cpp:92:3
==================================================
==================================================
name:operator<=>
is overloaded operator: 1
is autotype:1
is undeduced:0
is defaulted:1
deduced_type:auto
D:\\Febbe\\workspace\\llvm-project\\build\\tools\\clang\\tools\\extra\\test\\clang-tidy\\checkers\\Output\\modernize-use-trailing-return-type-cxx20.cpp.tmp.cpp:92:3
==================================================
==================================================
name:operator==
is overloaded operator: 1
is autotype:0
is undeduced:0
is defaulted:1
deduced_type:_Bool
D:\\Febbe\\workspace\\llvm-project\\build\\tools\\clang\\tools\\extra\\test\\clang-tidy\\checkers\\Output\\modernize-use-trailing-return-type-cxx20.cpp.tmp.cpp:92:3
==================================================
==================================================
name:operator==
is overloaded operator: 1
is autotype:0
is undeduced:0
is defaulted:1
deduced_type:_Bool
D:\\Febbe\\workspace\\llvm-project\\build\\tools\\clang\\tools\\extra\\test\\clang-tidy\\checkers\\Output\\modernize-use-trailing-return-type-cxx20.cpp.tmp.cpp:92:3
==================================================
```

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztWEtz2jAQ_jXmojFjbCBw8IFAubXpNPTckeXFqJEtjx5N0l_flSxeCUlLe0imA7ODLe1qn5_WtgpZPuZM0KaKB8Mom0XJIkpmqw2QtRRC3vOmIkyWQO65EKQAUlPDNlCS4pFE42RpG2a4bBbAhBsTI91FtqCokSrK5lG2iLIPjkWb8pi3cDROOpPhH4cd-aE2yjJDVqDNAtbUCnMTVs9IdHXdCRHCG0OoG1-hyqPZ4snslrdWHNAdatHf586mEyYb_ZLddBylc_I7iSlpJDwwaA1BraTshPaOHDp1HPS-BCUUtkv_rjInVxCiTelEspnElGHN8B9oTbQ-yIfWxIc4RwfTkP33RqN545077XRDa5-JNN1OLmOsVwXmE3Jm-tbHjuVz6T-I9XWtXBP5A5SQtERc79HgCnlsiOubneC23H9hzaHOPLZPQonSAdJsdZYq26ArlkF5Oi1fwFjVrJwt72YXxNftoj3jLKMByyeNcr3Ycc_UHJz69jw123Bcl6EKyqdh9ZH3V9XfKr6VVjH4gl3wQOM1VLwJwxZVm5Xcmfj8-WjlR9rQCgIWHAVL-Pvj8N9-8_3ZjhTiRx16jTX6ON1a97HzhDS82t6UL6EmWtZgNu4pI_jdb9rc2yfjJHnfQmt6_izx3JdbzGAncNAV9pOH-zvZzR5uwCD7ZPM4ZR1j4XI6miMtoSigu72X6k63lIWhK2ncKvkdmOlmCstF2d0aKYXubv17wrNZeDCKhll8HB6IxoaXj2G8AXYHKiy5saa1QbLGx5tq-E-IrYYYVXGBcIg7gMQunpg9PKRJn7Vt39Stu2JMU8TkLHv_wHh7Ny6gvYD2fwbtnnUmYpN_Ruy3a0TUBbLvARZv78YFshfIngfZ49fbXpln5TSb0p7hRkB3KkOOTlhmt6v4oz-AUeEgRr983KJPnrb0rBL5xphW-2-sJVLFzcYWfSZrHPjX--6yq3u65FpbwJf95SgbpWlvk-M1Ydm4GK0LOskmw2Q4hfUaaDmANYPhsCdoAULn0ejafbjDPfEq_GfQosfzNEmRksEgHUzSrD9Os6SYFKxgcHWV0mE0TKDGcvedH32pqp7KvUuFrTQyBddG75lUa141AN4c6scds5Eq97DuecO5d_wXMSoKLg">