<div dir="ltr">On Tue, Nov 12, 2013 at 4:11 PM, Howard Hinnant <span dir="ltr"><<a href="mailto:howard.hinnant@gmail.com" target="_blank">howard.hinnant@gmail.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On Nov 12, 2013, at 6:56 PM, Marshall Clow <<a href="mailto:mclow.lists@gmail.com">mclow.lists@gmail.com</a>> wrote:<br>

<br>
>> bad_optional_access should be in namespace std::experimental, not in namespace std.<br>
><br>
> I went back and forth about that. I agree - it _should_ be there.<br>
><br>
> However:<br>
>       The destructor for bad_optional_access lives in libc++.dylib. (due to a peculiarity in the Itanium ABI).<br>
>       If I put bad_optional_access in namespace std, then users do not need a new dylib when optional moves from std::experimental to std.<br>
<br>
</div>I vote std::experimental.  We don't want to commit a symbol to the permanent std:: abi until the committee says so.  But if someone is depending on a std::experimental symbol, we can more easily yank it.  It is unfortunate that if/when bad_optional_access is standardized that it won't be supported previous to a certain libc++ version.  But that seems like the least of the two evils.</blockquote>
<div><br></div><div>There's a third evil we could consider: keep bad_optional_access in std::experimental and add a using declaration for it in namespace std. But I guess we don't need to think about this until optional gets standardized.</div>
</div></div></div>