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

    <tr>
        <th>Summary</th>
        <td>
            Very misleading diagnostic for template `>>` in C++03
        </td>
    </tr>

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

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

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

<pre>
    The diagnostic for the code below is very misleading, and doesn't help diagnose the problem.

**Source:**
```cpp
template<class T, int N>
inline static const bool sized = sizeof(T) == N;

template<bool B = sized<int, 4>>
int f()
{
    return B ? 0 : 1;
}

int main()
{
    return f();
}
```

**Diagnostic:**
```
<source>:2:26: warning: variable templates are a C++14 extension [-Wc++14-extensions]
    2 | inline static const bool sized = sizeof(T) == N;
      | ^
<source>:2:1: warning: inline variables are a C++17 extension [-Wc++17-extensions]
    2 | inline static const bool sized = sizeof(T) == N;
      | ^
<source>:5:5: error: expected '(' for function-style cast or type construction
    5 | int f()
      | ~~~ ^
<source>:13:2: error: expected '>'
   13 | }
      |  ^
<source>:4:24: note: to match this '<'
    4 | template<bool B = sized<int, 4>>
      | ^
<source>:13:2: error: expected ',' or '>' in template-parameter-list
   13 | }
      |  ^
<source>:13:2: error: expected unqualified-id
```

**Resolution:** Change `4>>` to `4> >`

**Git hash:** 8f397e04e5ce87fb5ff99d6659ba959c22ea926c
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzEVU2T4yYQ_TX40mWXBPqwDjr4Y5zbHpKt5MxHy2ILgwJodieH-e0pZMmezJQzldpDXBKWQLzX7zXQPAR9togtKfekPK74GHvnW_lNiZVw6qX92iMozc_WhagldM5D7BGkUwgCjfsOOsAz-he46GCQK23PhB6AWwXKYbCE1hF6NMMCgxPA4J0weNmQ7Eiy3dzSdP3mRi-RsPl1Hqqy6yWH4doT8TIYHpGwgzQ8BPiaaLWN8IWwp-s32hptEULkKXbpbIggnDMQ9F-ogLDj9OQ6QrdfCW1ST-r8Qtj-bWBvuKbp-9tURdhB25ioi0R7Z46QUAltZqB6RgQA8BhHbyeYE2RA2A7yO2V9fMudkC5c28_AFraPMIt1H60-3hL7yO75lR3CnJUnwnY03VWK-jv3NiWc7eCZe82FQVjMCsA9AocDoXtC93kB-COiDdpZIOV-_YdcBta3gUDK410ZBVKnlP5sEmH6JSxSPj1UlL8TNPMuut7LqR_Jqf9_OeV8A3rv_PTwY0AZEz6tp4VST1u5G62M2tl1iC8GQfIQIe3wlwGvoflxGr8Tl7OId8v7HtPr6-vDuHI2e_0gMPaU2gUwZ1eR9fE9x0OCIuGnBqxL23UH0cGFR9lD7HW4khzekkAxIf73Hf55Fj5TS1Mgye6bdND2Fsl64J5fMKJfGx3iz7jyb4GM9s-RG91pVGutPj0xfsXgzDgtieXEgEPP7RmBVNliUJUl3-cOuPZ8xPpFR-h56O9I2441NWYFlhK3dSfKrmsaVVVlI3hTNpJS5A2t5Eq1TDWs4Sts86qpKloXVbPqW8wbzlknRCGF4mwrVIG8LBshmi0qxVa6pRlleZZVNKcFbTbbppA56-o6z5gSWU2KDC9cm40xz5eN8-eVDmHEttoWZbEyXKAJU7GkVBo-nRT38hgIpamK-jbNXovxHEiRpfSFO17U0WD7-z9L5ocaO6-CZOLdVG2X4ydjq9Gbto9xCJN_J0JPZx37UWykuxB6Snzz33rw7hvKSOhpEhMIPU16_g4AAP__A7w_WA">