<html>
    <head>
      <base href="https://bugs.llvm.org/">
    </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 - the check of static array initializer is strange"
   href="https://bugs.llvm.org/show_bug.cgi?id=42336">bug 42336</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;">Resolution</td>
           <td>---
           </td>
           <td>INVALID
           </td>
         </tr>

         <tr>
           <td style="text-align:right;">Status</td>
           <td>NEW
           </td>
           <td>RESOLVED
           </td>
         </tr></table>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED INVALID - the check of static array initializer is strange"
   href="https://bugs.llvm.org/show_bug.cgi?id=42336#c1">Comment # 1</a>
              on <a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED INVALID - the check of static array initializer is strange"
   href="https://bugs.llvm.org/show_bug.cgi?id=42336">bug 42336</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>[First case]
<span class="quote">> clang accepts the code, but gcc reject it:</span >

GCC's diagnostic is wrong here. The problem is that only a constexpr or const
integral data member can be initialized in a class definition. It looks like
GCC correctly detects the problem but then issues the wrong diagnostic in this
case.

It looks like clang doesn't diagnose that problem until the class is
instantiated if the initializer of the member is type-dependent (but it does
diagnose it in that case). Both Clang's and GCC's behaviors are conforming --
there is no requirement to diagnose invalid templates that are never
instantiated.

[Second case]
<span class="quote">> gcc accepts it, but clang rejects it:</span >

This is ill-formed. In this case, Clang rejects it in the template definition,
but GCC doesn't reject it until instantiation. Again, both behaviors are
conforming.</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>