<html>
    <head>
      <base href="https://bugs.llvm.org/">
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Nodiscard warning diagnosed twice when called in a template:"
   href="https://bugs.llvm.org/show_bug.cgi?id=44558">44558</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Nodiscard warning diagnosed twice when called in a template:
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>clang
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>trunk
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>Windows NT
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>enhancement
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>C++
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedclangbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>erich.keane@intel.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>blitzrakete@gmail.com, dgregor@apple.com, erik.pilkington@gmail.com, llvm-bugs@lists.llvm.org, richard-llvm@metafoo.co.uk
          </td>
        </tr></table>
      <p>
        <div>
        <pre><a href="https://godbolt.org/z/LesWP4">https://godbolt.org/z/LesWP4</a>

[[nodiscard]] int* bar();

template<typename T>
void foo() {
    bar();
}

void baz() {
    foo<int>();
}

<source>:7:5: warning: ignoring return value of function declared with
'nodiscard' attribute [-Wunused-result]

    bar();

    ^~~

<source>:7:5: warning: ignoring return value of function declared with
'nodiscard' attribute [-Wunused-result]

    bar();

    ^~~

<source>:11:5: note: in instantiation of function template specialization
'foo<int>' requested here

    foo<int>();


The warning should likely only happen 1x, but we end up diagnosing it 2x.  We
suppress 'errors' by marking the template invalid (and thus uncallable), but
don't do so with warnings.</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>