This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Implement LWG 2192 and LWG 2294 for std::abs


It looks like I forgot to send this patch to the lists last month.

This implements the requirements that all overloads of std::abs are
declared by either of <cmath> or <cstdlib>. This ensures that
including only one of those headers and calling std::abs doesn't cause
conversions from integers to floating point types, or vice versa.

	* doc/xml/manual/intro.xml: Document LWG 2192 changes.
	* doc/html/*: Regenerate.
	* include/Makefile.am: Add bits/std_abs.h.
	* include/Makefile.in: Regenerate.
	* include/bits/std_abs.h: New header defining all required overloads
	of std::abs in one place (LWG 2294).
	* include/c_global/cmath (abs(double), abs(float), abs(long double)):
	Move to bits/std_abs.h.
	(abs<_Tp>(_Tp)): Remove.
	* include/c_global/cstdlib (abs(long), abs(long long), abs(__int<N>)):
	Move to bits/std_abs.h.
	* testsuite/26_numerics/headers/cmath/dr2192.cc: New test.
	* testsuite/26_numerics/headers/cmath/dr2192_neg.cc: New test.
	* testsuite/26_numerics/headers/cstdlib/dr2192.cc: New test.
	* testsuite/26_numerics/headers/cstdlib/dr2192_neg.cc: New test.

Tested on ppc64le and x86_64 GNU/Linux, and committed to trunk on 30
September.

Attachment: patch.txt
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]