title: Can class template constructors have a redundant template parameter list in c++20
body: <p>As far as I'm aware, the following <a href="https://godbolt.org/z/b9sqrq" rel="noreferrer">code</a>:</p>
  <pre><code>template&lt;typename T&gt;
  struct S {
      S&lt;T&gt;();
  };
  </code></pre>
  <p>is well-formed, even though the <code>&lt;T&gt;</code> in the declaration of the constructor is redundant.</p>
  <p>However, on gcc trunk (but not on gcc10.2), with <code>-std=c++20</code> this gives an error:</p>
  <pre><code>error: expected unqualified-id before ')' token
      3 |     S&lt;T&gt;();
                   ^
  </code></pre>
  <p>The <a href="https://godbolt.org/z/87b7dc" rel="noreferrer">code</a> compiles on clang trunk with <code>-std=c++20</code>. Is this a bug, or is this a breaking change in c++20 that is yet to be implemented in all compilers?</p>