<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Feb 10, 2019, at 17:11, Eric Fiselier via libcxx-dev <<a href="mailto:libcxx-dev@lists.llvm.org" class="">libcxx-dev@lists.llvm.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div class="">Libc++ is a C++11 STL implementation that tolerates C++03 compilers.</div><div class="">If a feature can be reasonably implemented in C++03, then we provide it.</div></div></div></blockquote><div><br class=""></div><div>It can be implemented in C++03, however there will be a visible code complexity cost in doing so with Olivier's patch (mostly because of the lack of lambdas).</div><br class=""><blockquote type="cite" class=""><div class=""><div dir="ltr" class=""><div class=""><atomic> is one example, <thread>, <unordered_map> and `std::shared_ptr` are others.</div></div></div></blockquote><div><br class=""></div><div>Yes, but this was decided in a time where not many compilers supported C++11 properly, right? 8 years later, we have many compilers supporting C++11 properly.</div><div><br class=""></div><div>I suspect the number of people that use a recent libc++ with a compiler that does not support C++11 is very, very close to 0. One would have to deliberately update libc++ while keeping the compiler old, and then point the compiler to the updated libc++ headers manually. Additionally, the number of people that are in that setup AND that want to use std::atomic is likely to be even smaller.</div><div><br class=""></div><div>I have an impression that we might be making our lives harder just to provide something that nobody cares about. Is there a common use-case of libc++ I'm missing here? Maybe some Linux distribution doing something funky that makes the old-compiler-with-new-libc++ more widely used than I imagine?</div><div><br class=""></div><div>Unless we have a reason to do otherwise, I'd vote for not caring about C++03 support in <atomic>.</div><div><br class=""></div><div>Louis</div><div><br class=""></div><br class=""><blockquote type="cite" class=""><div class=""><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Feb 6, 2019 at 11:39 PM Olivier Giroux via libcxx-dev <<a href="mailto:libcxx-dev@lists.llvm.org" class="">libcxx-dev@lists.llvm.org</a>> wrote:<br class=""></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">





<div lang="EN-US" class="">
<div class="gmail-m_-2222480216075481894WordSection1"><p class="MsoNormal">Maybe another way to test these waters is to ask what is actually being _<i class="">tested_</i>?<u class=""></u><u class=""></u></p><p class="MsoNormal"><u class=""></u> <u class=""></u></p><p class="MsoNormal">Olivier<u class=""></u><u class=""></u></p><p class="MsoNormal"><u class=""></u> <u class=""></u></p>
<div style="border-right:none;border-bottom:none;border-left:none;border-top:1pt solid rgb(181,196,223);padding:3pt 0in 0in" class=""><p class="MsoNormal"><b class=""><span style="font-size: 12pt;" class="">From: </span></b><span style="font-size: 12pt;" class=""><<a href="mailto:jfbastien@apple.com" target="_blank" class="">jfbastien@apple.com</a>> on behalf of JF Bastien <<a href="mailto:jfbastien@apple.com" target="_blank" class="">jfbastien@apple.com</a>><br class="">
<b class="">Date: </b>Wednesday, February 6, 2019 at 11:21 AM<br class="">
<b class="">To: </b>Olivier Giroux <<a href="mailto:OGiroux@nvidia.com" target="_blank" class="">OGiroux@nvidia.com</a>><br class="">
<b class="">Cc: </b>"<a href="mailto:libcxx-dev@lists.llvm.org" target="_blank" class="">libcxx-dev@lists.llvm.org</a>" <<a href="mailto:libcxx-dev@lists.llvm.org" target="_blank" class="">libcxx-dev@lists.llvm.org</a>><br class="">
<b class="">Subject: </b>Re: [libcxx-dev] What C++03 support should <atomic> have?<u class=""></u><u class=""></u></span></p>
</div>
<div class=""><p class="MsoNormal"><u class=""></u> <u class=""></u></p>
</div><p class="MsoNormal">Doing atomics before 11 was pretty wild… So I understand that people using an old C++ want some nice atomics. At the same time… They really should update to C++11 or later.
<u class=""></u><u class=""></u></p>
<div class=""><p class="MsoNormal"><u class=""></u> <u class=""></u></p>
</div>
<div class=""><p class="MsoNormal">What does libc++ try to do with new library features on old languages? Seems easy enough so support most of say optional or variant (without CTAD) before C++17. Is this done consistently? And how far back, do we even try to support C++98?
<u class=""></u><u class=""></u></p>
<div class=""><p class="MsoNormal"><u class=""></u> <u class=""></u></p>
</div>
<div class=""><p class="MsoNormal">It seems like we can be nice where it’s easy, but at some point in time are we just supporting stuff nobody cares about?<u class=""></u><u class=""></u></p>
</div>
<div class=""><p class="MsoNormal"><u class=""></u> <u class=""></u></p>
<div class=""><p class="MsoNormal"><br class="">
<br class="">
<u class=""></u><u class=""></u></p>
<blockquote style="margin-top:5pt;margin-bottom:5pt" class="">
<div class=""><p class="MsoNormal">On Feb 5, 2019, at 9:33 PM, Olivier Giroux via libcxx-dev <<a href="mailto:libcxx-dev@lists.llvm.org" target="_blank" class="">libcxx-dev@lists.llvm.org</a>> wrote:<u class=""></u><u class=""></u></p>
</div><p class="MsoNormal"><u class=""></u> <u class=""></u></p>
<div class="">
<div class=""><p class="MsoNormal">Sorry, that quote is from my patch, but there’s identical code elsewhere in the file. I swear!<span style="font-size:12pt" class=""><u class=""></u><u class=""></u></span></p>
</div>
<div class=""><p class="MsoNormal"> <span style="font-size:12pt" class=""><u class=""></u><u class=""></u></span></p>
</div>
<div class=""><p class="MsoNormal">Olivier<span style="font-size:12pt" class=""><u class=""></u><u class=""></u></span></p>
</div>
<div class=""><p class="MsoNormal"> <span style="font-size:12pt" class=""><u class=""></u><u class=""></u></span></p>
</div>
<div style="border-right:none;border-bottom:none;border-left:none;border-top:1pt solid rgb(181,196,223);padding:3pt 0in 0in" class="">
<div class=""><p class="MsoNormal"><b class=""><span style="font-size:12pt" class="">From:<span class="gmail-m_-2222480216075481894apple-converted-space"> </span></span></b><span style="font-size:12pt" class="">libcxx-dev <<a href="mailto:libcxx-dev-bounces@lists.llvm.org" target="_blank" class="">libcxx-dev-bounces@lists.llvm.org</a>> on behalf
 of Olivier Giroux via libcxx-dev <<a href="mailto:libcxx-dev@lists.llvm.org" target="_blank" class="">libcxx-dev@lists.llvm.org</a>><br class="">
<b class="">Reply-To:<span class="gmail-m_-2222480216075481894apple-converted-space"> </span></b>Olivier Giroux <<a href="mailto:OGiroux@nvidia.com" target="_blank" class="">OGiroux@nvidia.com</a>><br class="">
<b class="">Date:<span class="gmail-m_-2222480216075481894apple-converted-space"> </span></b>Tuesday, February 5, 2019 at 9:33 PM<br class="">
<b class="">To:<span class="gmail-m_-2222480216075481894apple-converted-space"> </span></b>"<a href="mailto:libcxx-dev@lists.llvm.org" target="_blank" class="">libcxx-dev@lists.llvm.org</a>" <<a href="mailto:libcxx-dev@lists.llvm.org" target="_blank" class="">libcxx-dev@lists.llvm.org</a>><br class="">
<b class="">Subject:<span class="gmail-m_-2222480216075481894apple-converted-space"> </span></b>[libcxx-dev] What C++03 support should <atomic> have?<u class=""></u><u class=""></u></span></p>
</div>
</div>
<div class="">
<div class=""><p class="MsoNormal"> <span style="font-size:12pt" class=""><u class=""></u><u class=""></u></span></p>
</div>
</div>
<div class=""><p class="MsoNormal">There is a little bit of code in this file that suggests it once worked in C++03.<span style="font-size:12pt" class=""><u class=""></u><u class=""></u></span></p>
</div>
<div class=""><p class="MsoNormal"> <span style="font-size:12pt" class=""><u class=""></u><u class=""></u></span></p>
</div>
<div class=""><p class="MsoNormal">Like so:<span style="font-size:12pt" class=""><u class=""></u><u class=""></u></span></p>
</div>
<div class=""><p class="MsoNormal" style="line-height:13.5pt;background:rgb(30,30,30)"><span style="font-size:10pt;font-family:Consolas;color:rgb(197,134,192)" class="">#ifndef</span><span class="gmail-m_-2222480216075481894apple-converted-space"><span style="font-size:10pt;font-family:Consolas;color:rgb(86,156,214)" class=""> </span></span><span style="font-size:10pt;font-family:Consolas;color:rgb(220,220,170)" class="">_LIBCPP_CXX03_LANG</span><span style="font-size:12pt" class=""><u class=""></u><u class=""></u></span></p>
</div>
<div class=""><p class="MsoNormal" style="line-height:13.5pt;background:rgb(30,30,30)"><span style="font-size:10pt;font-family:Consolas;color:rgb(212,212,212)" class="">   <span class="gmail-m_-2222480216075481894apple-converted-space"> </span></span><span style="font-size:10pt;font-family:Consolas;color:rgb(220,220,170)" class="">__cxx_atomic_type</span><span style="font-size:10pt;font-family:Consolas;color:rgb(212,212,212)" class="">()
 _NOEXCEPT =<span class="gmail-m_-2222480216075481894apple-converted-space"> </span></span><span style="font-size:10pt;font-family:Consolas;color:rgb(197,134,192)" class="">default</span><span style="font-size:10pt;font-family:Consolas;color:rgb(212,212,212)" class="">;</span><span style="font-size:12pt" class=""><u class=""></u><u class=""></u></span></p>
</div>
<div class=""><p class="MsoNormal" style="line-height:13.5pt;background:rgb(30,30,30)"><span style="font-size:10pt;font-family:Consolas;color:rgb(197,134,192)" class="">#else</span><span style="font-size:12pt" class=""><u class=""></u><u class=""></u></span></p>
</div>
<div class=""><p class="MsoNormal" style="line-height:13.5pt;background:rgb(30,30,30)"><span style="font-size:10pt;font-family:Consolas;color:rgb(212,212,212)" class="">   <span class="gmail-m_-2222480216075481894apple-converted-space"> </span></span><span style="font-size:10pt;font-family:Consolas;color:rgb(220,220,170)" class="">__cxx_atomic_type</span><span style="font-size:10pt;font-family:Consolas;color:rgb(212,212,212)" class="">()
 _NOEXCEPT :<span class="gmail-m_-2222480216075481894apple-converted-space"> </span></span><span style="font-size:10pt;font-family:Consolas;color:rgb(220,220,170)" class="">__a_value</span><span style="font-size:10pt;font-family:Consolas;color:rgb(212,212,212)" class="">() {}</span><span style="font-size:12pt" class=""><u class=""></u><u class=""></u></span></p>
</div>
<div class=""><p class="MsoNormal" style="line-height:13.5pt;background:rgb(30,30,30)"><span style="font-size:10pt;font-family:Consolas;color:rgb(197,134,192)" class="">#endif</span><span class="gmail-m_-2222480216075481894apple-converted-space"><span style="font-size:10pt;font-family:Consolas;color:rgb(212,212,212)" class=""> </span></span><span style="font-size:10pt;font-family:Consolas;color:rgb(106,153,85)" class="">//
 _LIBCPP_CXX03_LANG</span><span style="font-size:12pt" class=""><u class=""></u><u class=""></u></span></p>
</div>
<div class=""><p class="MsoNormal"> <span style="font-size:12pt" class=""><u class=""></u><u class=""></u></span></p>
</div>
<div class=""><p class="MsoNormal">Is that an actual design goal? It looks like it’s broken right now.<span style="font-size:12pt" class=""><u class=""></u><u class=""></u></span></p>
</div>
<div class=""><p class="MsoNormal"> <span style="font-size:12pt" class=""><u class=""></u><u class=""></u></span></p>
</div>
<div class=""><p class="MsoNormal">Do we maintain this, or do we bump the assumed default to C++11?<span style="font-size:12pt" class=""><u class=""></u><u class=""></u></span></p>
</div>
<div class=""><p class="MsoNormal"> <span style="font-size:12pt" class=""><u class=""></u><u class=""></u></span></p>
</div>
<div class=""><p class="MsoNormal">Thanks for your guidance,<span style="font-size:12pt" class=""><u class=""></u><u class=""></u></span></p>
</div>
<div class=""><p class="MsoNormal"> <span style="font-size:12pt" class=""><u class=""></u><u class=""></u></span></p>
</div>
<div class=""><p class="MsoNormal">Olivier<span style="font-size:12pt" class=""><u class=""></u><u class=""></u></span></p>
</div>
<div class=""><p class="MsoNormal"> <span style="font-size:12pt" class=""><u class=""></u><u class=""></u></span></p>
</div>
<div class="">
<div class="MsoNormal" align="center" style="text-align:center">
<hr size="0" width="100%" align="center" class="">
</div>
</div>
<div class="">
<div class=""><p class="MsoNormal">This email message is for the sole use of the intended recipient(s) and may contain confidential information.  Any unauthorized review, use, disclosure or distribution is prohibited.  If you are not the intended recipient, please contact
 the sender by reply email and destroy all copies of the original message.<span style="font-size:12pt" class=""><u class=""></u><u class=""></u></span></p>
</div>
</div>
<div class="">
<div class="MsoNormal" align="center" style="text-align:center">
<hr size="0" width="100%" align="center" class="">
</div>
</div><p class="MsoNormal"><span style="font-size:9pt;font-family:Helvetica" class="">_______________________________________________<br class="">
libcxx-dev mailing list<br class="">
<a href="mailto:libcxx-dev@lists.llvm.org" target="_blank" class="">libcxx-dev@lists.llvm.org</a><br class="">
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/libcxx-dev" target="_blank" class="">https://lists.llvm.org/cgi-bin/mailman/listinfo/libcxx-dev</a></span><u class=""></u><u class=""></u></p>
</div>
</blockquote>
</div><p class="MsoNormal"><u class=""></u> <u class=""></u></p>
</div>
</div>
</div>
</div>

_______________________________________________<br class="">
libcxx-dev mailing list<br class="">
<a href="mailto:libcxx-dev@lists.llvm.org" target="_blank" class="">libcxx-dev@lists.llvm.org</a><br class="">
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/libcxx-dev" rel="noreferrer" target="_blank" class="">https://lists.llvm.org/cgi-bin/mailman/listinfo/libcxx-dev</a><br class="">
</blockquote></div>
_______________________________________________<br class="">libcxx-dev mailing list<br class=""><a href="mailto:libcxx-dev@lists.llvm.org" class="">libcxx-dev@lists.llvm.org</a><br class="">https://lists.llvm.org/cgi-bin/mailman/listinfo/libcxx-dev<br class=""></div></blockquote></div><br class=""></body></html>