svn commit: r253563 - head/contrib/libstdc++/include/c_std

Tijl Coosemans tijl at coosemans.org
Thu Jul 25 18:20:19 UTC 2013


On Tue, 23 Jul 2013 10:23:43 +0000 (UTC) David Chisnall wrote:
> Author: theraven
> Date: Tue Jul 23 10:23:43 2013
> New Revision: 253563
> URL: http://svnweb.freebsd.org/changeset/base/253563
> 
> Log:
>   Add isnan() and isinf() to the global namespace in libstdc++'s <cmath>.
>   
>   The standard (n3242, section 17.6.1.1, paragraph 4) says that, because these are
>   declared as macros in the C specification (even though they are
>   implemented as functions in the C++ library) they should be in the global
>   namespace.
>   
>   A surprising number of configure checks rely on this.  It was broken by recent
>   cleanups to math.h.
> 
> Modified:
>   head/contrib/libstdc++/include/c_std/std_cmath.h
> 
> Modified: head/contrib/libstdc++/include/c_std/std_cmath.h
> ==============================================================================
> --- head/contrib/libstdc++/include/c_std/std_cmath.h	Tue Jul 23 05:11:22 2013	(r253562)
> +++ head/contrib/libstdc++/include/c_std/std_cmath.h	Tue Jul 23 10:23:43 2013	(r253563)
> @@ -589,6 +589,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
>      { return ::__gnu_cxx::__capture_isunordered(__f1, __f2); }
>  
>  _GLIBCXX_END_NAMESPACE
> +using std::isnan;
> +using std::isinf;
>  
>  #endif /* _GLIBCXX_USE_C99_FP_MACROS_DYNAMIC */
>  #endif

Doesn't this violate C++98/C++03? The quote above is for C++11. I think
the real issue here is that isnan/isinf functions were completely removed
from math.h instead of just hidden for C++11 (with some #if). This also
broke compilation of C code with -D_XOPEN_SOURCE=500.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <http://lists.freebsd.org/pipermail/svn-src-head/attachments/20130725/233215db/attachment.sig>


More information about the svn-src-head mailing list