<html>
    <head>
      <base href="https://llvm.org/bugs/" />
    </head>
    <body><span class="vcard"><a class="email" href="mailto:richard-llvm@metafoo.co.uk" title="Richard Smith <richard-llvm@metafoo.co.uk>"> <span class="fn">Richard Smith</span></a>
</span> changed
              <a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED INVALID - Clang-CL fails to match types after resolving typedefs"
   href="https://llvm.org/bugs/show_bug.cgi?id=31734">bug 31734</a>
        <br>
             <table border="1" cellspacing="0" cellpadding="8">
          <tr>
            <th>What</th>
            <th>Removed</th>
            <th>Added</th>
          </tr>

         <tr>
           <td style="text-align:right;">Status</td>
           <td>NEW
           </td>
           <td>RESOLVED
           </td>
         </tr>

         <tr>
           <td style="text-align:right;">Resolution</td>
           <td>---
           </td>
           <td>INVALID
           </td>
         </tr></table>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED INVALID - Clang-CL fails to match types after resolving typedefs"
   href="https://llvm.org/bugs/show_bug.cgi?id=31734#c1">Comment # 1</a>
              on <a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED INVALID - Clang-CL fails to match types after resolving typedefs"
   href="https://llvm.org/bugs/show_bug.cgi?id=31734">bug 31734</a>
              from <span class="vcard"><a class="email" href="mailto:richard-llvm@metafoo.co.uk" title="Richard Smith <richard-llvm@metafoo.co.uk>"> <span class="fn">Richard Smith</span></a>
</span></b>
        <pre>Both compilers are correct -- the code is ill-formed, but a compiler is not
required to diagnose it.

The standard says that the dependent portion of a function signature must be
written with the same token sequence in every redeclaration, so the program is
ill-formed. However, to permit implementations to perform certain
canonicalization steps prior to checking, implementations are permitted to also
accept programs where the declaration and definition use different token
sequences that nonetheless must always produce the same type for every possible
substitution.

The full details of the rule are here: <a href="http://eel.is/c++draft/temp.over.link#6">http://eel.is/c++draft/temp.over.link#6</a></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>