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

    <tr>
        <th>Summary</th>
        <td>
            False-positive const-correctness warning would cause compiler error (functor with default args)
        </td>
    </tr>

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

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

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

<pre>
    The following code (minimal, marked otherwise) causes clang-tidy to suggest a const-fix which obviously does not compile. It seems to be related to calls to functions taking default arguments of type `std::function<>`. Does **not** reproduce if you take out any of the following:
* the call to `functor`, utilizing the default value
* the argument of `functor` having a default value
* changing the type of the argument of `functor` to any primitive types

```C++
#include <functional>

template <typename function_t = std::function<void()>>
void functor(function_t && f = [](){}) { 

 //not minimal, but isolates the erroneous const-correctness warning
 static_cast<void>(f);
}

int main( ) {
  
  functor();
 bool x = false; //<-- erroneous warning: variable 'x' of type 'bool' can be declared 'const'
  x = true;
  
  //not minimal, but isolates the erroneous const-correctness warning
 static_cast<void>(x);
}
```

**Expected behavior**: clang-tidy does not warn
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8VE1v6zgM_DXKhUjgyEkcH3xImwbY-94fZJm2tU-WAonKx_76BR27dYHX6wJG3UjmcDgcUsVoOodYif2b2J9XKlHvQ9V3QRGho15ZDKvaN8_q7x6h9db6u3EdaN8gCHkcjDODskK-w6DCb2zAU4_hbiIKWYJWKWIEbZXr1mSaJ5CHmLoOI4EC7V2kdWsecO-N7sHXN-NTtE9oPEZwnkD74WosbuAvgog4REaoEQJaRdjwL62sHY_b5DQZ7yKQ-s0sG2xVsgQqdGlARxF8C_S8IohDFqkR-UnkpzlM5O8i_xCHbANnTi_kSciT8_T6BwJeg2-SRjAtPH3iLAg-ESj3HJGXEjF2dhbZGMo3TJNZikM2ZvRBHDIWLpGx5l_my5_NnG_KJvyOMJfBub6hQK9uHK9-ita9ct2cYRRgovszJPmxrGswgyFze4XFCfL195C9nnch3_iZ0uXGaZvYH_n7rK2yLO0imHC4cgf5I0Z2asDPBv4iEPkZ_tShmzeNkEchSwacMfkUZvLyuMSRByEP0I6AL5dP4cWbKM5sUlG8wZIaCHkR8sLuW9i7TgQmeuYcR-kwBO_QpzjZWPsQUJPDGOGugmMPvPAiKTL6l1aR5gryD6Y5VjHrVpyXJIwjGJRxQh5hIjmhwfz-qneJA7X3Fh5jva2yEUX-NlUk8vf1esF7Zpmf4KaCUbXlmS4eQhZfgyILBuQjrRxPXoPaqoANX42VC1nMlF5pKST84vPJ9_-S9fFnWWe3frPwONkfjytqXiY18iCxpONNflpurs-VxCxWTZU3ZV6qFVbbQu53RX48HFd9tZdZs6_lPm_bTJXlHg-yKIp2V5bbLKvVcWUqmcldVma77XFb7IrNdlcWe9zrom63h21Wil2GgzJ2Y-1t2PjQrUyMCattVsjjdmVVjTaOC1tKh3cYb4WUvL9DxUHrOnVR7DJrIsUvGDJksbqwJ9ZXH19T_aPIcPfJNq8NPm_hMHYnwDxiPsDdUL_cs1HIcpWCrXqia-TxHbveGepTvdF-EPLCjKbX-hr8P6hJyMtYRxTyMhV6q-R_AQAA___-qRjt">