<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, Oct 8, 2015 at 7:23 AM, Marshall Clow <span dir="ltr"><<a href="mailto:mclow.lists@gmail.com" target="_blank">mclow.lists@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><span class=""><div>On Tue, Oct 6, 2015 at 3:36 PM, Richard Smith <span dir="ltr"><<a href="mailto:richard@metafoo.co.uk" target="_blank">richard@metafoo.co.uk</a>></span> wrote:<br></div></span><div class="gmail_extra"><div class="gmail_quote"><span class=""><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr">Split <math.h> out of <cmath>. This is a big change, but the same pattern as the prior ones.</div><div dir="ltr"><br></div></blockquote></span>In this patch, you replicate the #ifdef XXX, __libcpp_XXX, #undef XXX dance for all the isXXX functions. Is that because they're not required to be actual functions in a C library?</div></div></div></blockquote><div><br></div><div>Yes. Per C11 7.12.3, the following are defined as type-generic macros that take any real floating-point type:</div><div><br></div><div>  fpclassify, isfinite, isinf, isnan, isnormal, signbit</div><div><br></div><div>Per C11 7.12.14, the following are defined as type-generic macros that take any pair of real floating-point types:</div><div><br></div><div>  isgreater, isgreaterequal, isless, islessequal, islessgreater, isunordered</div><div><br></div><div>Per [c.math]p10, we are required to remove those macros and replace them with a set of overloaded functions. For those cases (and *only* those cases), we define a function template to capture the contents of the macro, then undefine the macro.</div><div><br></div><div>Note that libc++'s behavior here is non-conforming (both before and after this change) because it's required to provide a specific set of overloads, but instead only provides a template. This patch series neither improves nor regresses libc++'s conformance in that area.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>Other than that Q, LGTM. Like the extended tests.</div><span class="HOEnZb"><font color="#888888"><div><br></div></font></span></div><span class="HOEnZb"><font color="#888888">-- Marshall</font></span></div></div>
</blockquote></div><br></div></div>