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

    <tr>
        <th>Summary</th>
        <td>
            [clang] [[nodiscard]] ignored in std::function due to warning suppression in system headers
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang
      </td>
    </tr>

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

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

<pre>
    Consider:

```c++
#include <functional>

struct [[nodiscard]] A {};

A f();

std::function<void ()> ff(f);

void g() {
    ff();
}
```

std::function calls f()  (or rather, a function pointer that that returns an A), but returns void. So somewhere, something should complain about the nodiscard A being discarded. But it looks like it's explicitly silenced somewhere, causing hard-to-find bugs.

Investigation by the gcc team [1] revealed it's likely due to -Wunused-result being suppressed in system headers, which it probably should not be.

[1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120460
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJx0U0GPszYQ_TXmMgoCA0ty4ECSD6nnHnqsjD2Au46NPHa26a-vDMnutp8-aQSyeTPvzTxGEOnZInasObPmmokYFuc7cdfv-q7DIxudenQXZ0kr9KzqWbHFW7GHZPycougZr7SVJioEVl2maGXQzgrDqh97DgUfZYCN6Gyd0iSFV6y5suYKPbD2zNorq847uoeJ8SPjp88bCirxV_2rNqsud6cVvHA_YEo50_ekDTDviI2i6AFgB37h2uv3nn5BB1IYQy9ZkGidBy_Cgp7xCwj4RK5O24AewiLC_vAYorcEwkKfePkFxvh1nWTm8LsDcjf8WNBjQqRDWLSdgRYXjQLpbqsR2oIYXUyVET4HCT2MmLDPM6oczjGADmCceycw-h1BB8ZbAvx7NVrqYB5A2qCVqP5LLUWkVGwRXh2CO0zaKhjjTPk-nd_sHSnoWWz9jo9NyywlBBS35HGZXPV4R2FQvWiTBPMAFRGCg8Mf0UZCdfBI0YSnfIrr6pEoZVmgBwW8wYJCoaek7GPRckldrd6NYkwd7MOxLpV46nspWEJYKfnIB8aHWcp8tjF3fmZ8GOP8jzZGMD7Q4j7-HOOcy1mzatCKVdeSF_VbkamuUqfqJDLsyrY-1nXbvJXZ0h2PskFeFI1oJ3V6aycpR1R1OaE6lVVzzHTHC94UDT-WTcPrMq9KfjqN2IpGFmNRt6wu8Ca0yY2535KmTBNF7Mq6bE9lZsSIhrbF5FwaYWfGedpR36WEQ3KD1YXRFOirRNDBbNu8ZzTXXyycnq3zzxn_9Kc_DfoQ3n63JH36yZMsetP9b8w6LHHMpbsxPiRlz9dh9e4vlIHxYeuUGB-ezd47_m8AAAD__3t9cN0">