<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><br class=""><blockquote type="cite" class=""><div class="">On Oct 19, 2018, at 3:18 PM, Richard Smith <<a href="mailto:richard@metafoo.co.uk" class="">richard@metafoo.co.uk</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div class="gmail_quote"><div dir="ltr" class="">On Wed, 17 Oct 2018 at 11:44, Ben Craig 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:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">"Magic" types that the compiler / core language know about don't go in the versioned namespace.<br class=""></blockquote><div class=""><br class=""></div><div class="">That certainly applies to things like std::type_info, std::initializer_list, and std::bad_alloc, but std::exception is not special in this regard.</div><div class=""><br class=""></div><div class="">Rather, I think the reason we don't version std::exception is so that in code that mixes use of libc++ and libstdc++, one can throw an exception derived from std::exception using one library and catch it using the other library. (A special case of that: the default 'terminate' handler can print out details of the thrown exception if it's derived from std::exception, even if it's using the std::exception from a different stdlib.)</div></div></div></div></blockquote><div><br class=""></div><div>That makes a lot of sense. This means we have an official or unofficial "contract" with libstdc++ not to put those symbols in a versioned namespace.</div><div><br class=""></div><div>Louis</div><br class=""><blockquote type="cite" class=""><div class=""><div dir="ltr" class=""><div class="gmail_quote"><div class=""> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
> -----Original Message-----<br class="">
> From: libcxx-dev <<a href="mailto:libcxx-dev-bounces@lists.llvm.org" target="_blank" class="">libcxx-dev-bounces@lists.llvm.org</a>> On Behalf Of Louis<br class="">
> Dionne via libcxx-dev<br class="">
> Sent: Wednesday, October 17, 2018 1:33 PM<br class="">
> To: <a href="mailto:libcxx-dev@lists.llvm.org" target="_blank" class="">libcxx-dev@lists.llvm.org</a><br class="">
> Subject: [libcxx-dev] Question: Why are std::exception & friends not in a<br class="">
> versioned namespace?<br class="">
> <br class="">
> The title of the message pretty much says everything. I’m wondering why<br class="">
> `std::exception` is not `std::__1::exception` instead — most symbols are in<br class="">
> the  versioned namespace, but not this one.<br class="">
> <br class="">
> Thanks,<br class="">
> Louis<br class="">
> <br 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://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_cgi-" rel="noreferrer" target="_blank" class="">https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_cgi-</a><br class="">
> 2Dbin_mailman_listinfo_libcxx-<br class="">
> 2Ddev&d=DwIGaQ&c=I_0YwoKy7z5LMTVdyO6YCiE2uzI1jjZZuIPelcSjixA&r=y8<br class="">
> mub81SfUi-UCZRX0Vl1g&m=SXXSmQhIwn-A25pzcb_sggzAo2-eOJsf6qXxNo-<br class="">
> nK0Y&s=CmmWD_6xN8H21UexX902giBa7RN0TM7POgqsYXG34VA&e=<br 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="http://lists.llvm.org/cgi-bin/mailman/listinfo/libcxx-dev" rel="noreferrer" target="_blank" class="">http://lists.llvm.org/cgi-bin/mailman/listinfo/libcxx-dev</a><br class="">
</blockquote></div></div>
</div></blockquote></div><br class=""></body></html>