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

    <tr>
        <th>Summary</th>
        <td>
            some libc++ 19.1.0 headers no longer compile with C++11
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            libc++
      </td>
    </tr>

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

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

<pre>
    I note that the libc++ 19.1.0 headers contain code that is not valid C++11 code.

For example __type_traits/desugars_to.h contains:

template <class _CanonicalTag, class _Operation, class... _Args>
inline const bool __desugars_to_v = false;

variable templates were introduced in C++14. 

If I compile with -Werror -Wstd=c++11 the compiler I use will give an error.

I believe this code (and its uses) should be guarded with _LIBCPP_STD_VERSION >= 14 conditionals.

Thank you for your time in this matter,

Ed Vogel

</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJx8k81u-ygUxZ8Gb65iGXD-SRZe5KORIo2m1bRql9a1ubaZwRABdqdvPyJO05nNrJDQ_XE4hwOGoHtLVLH1ga1PGU5xcL4i1c2uJ5M1Tn1VF7AuEsQBI8SBwOimZeLAxAH4Lud5AQOhIh-gdTaittA6dZ_XIcEwo9EKjgvF-W0gZ8WeFfuz80B_43g1BHUdv65UR486BibOisLUow91dPnwfXpgcr-gkcarwUjA5LE1GALUR7TO6hbNG_ZMHOG-_Xwlj1E7-9jL8xzqve8Dk0-s2GtrtKUkESI0zhmo63-p1zMweYIOTSAmD4v8jF5jYwi-7xHgkzyBttE7NbWkQNuH6TKHBbt0cIHWjVdtCD51HGD1Qd47D6uPEBWTp_aRU4r7PurhAlNIhDHQ65kALdy4e5AXaMhomlPyOixvwMQWrQIdQ2IDEzsIg5uMgoagn9ArUssd6t8uh-PLS_36dqrfn_54vTz_DikaeQJeplyUTvmhCXe5twHtX_DlJuicT6uHqMfkftEfMUbyTByX8ScF76lSrNhnqpJqJ3eYUcU3cie2sixFNlTbtpQbUWwl_pJ8KzZrKgRvtwVvZdcpLDNdiUKsC8E5L_lGiLxbcyk2XbeTHSLHDSsLGlGb3Jh5zJ3vMx3CRBUXvzZSZgYbMuFWdiF-asyESOX3VaJWzdQHVhZGhxh-zok6GqqCG_-v_9aBcbYn_9_3ffQ-m7yphhivtw6LMxPnXsdhavLWjUyck9p9WV29-5PayMT5ZiF9h7uLuRL_BAAA__-fCDFH">