r270646 - in /trunk/libstdc++-v3: ChangeLog inc...
redi@gcc.gnu.org
redi@gcc.gnu.org
Mon Apr 29 12:12:00 GMT 2019
Author: redi
Date: Mon Apr 29 12:12:43 2019
New Revision: 270646
URL: https://gcc.gnu.org/viewcvs?rev=270646&root=gcc&view=rev
Log:
PR libstdc++/87982 Fix generate_n and fill_n use of _Size parameter
The standard only requires that _Size can be converted to an integral
type, not that it can be used for arithmetic. Add a new set of
__size_to_integer helper functions to do the conversion (which will be
ambiguous if there is no one conversion that is better than any others).
Also add tests for DR 426 which requires these algorithms and search_n
to handle negative values of n.
PR libstdc++/87982
* include/bits/stl_algo.h (generate_n): Convert _Size parameter to
an integral type.
* include/bits/stl_algobase.h (__size_to_integer): New overloaded
functions to convert a value to an integral type.
(__fill_n_a, __fill_n_a): Assert that __n is already an integral type.
(fill_n): Convert _Size parameter to an integral type.
* testsuite/25_algorithms/fill_n/dr426.cc: New test.
* testsuite/25_algorithms/generate_n/87982.cc: New test.
* testsuite/25_algorithms/generate_n/dr426.cc: New test.
Added:
trunk/libstdc++-v3/testsuite/25_algorithms/fill_n/87982.cc
trunk/libstdc++-v3/testsuite/25_algorithms/fill_n/87982_neg.cc
trunk/libstdc++-v3/testsuite/25_algorithms/fill_n/dr426.cc
trunk/libstdc++-v3/testsuite/25_algorithms/generate_n/87982.cc
trunk/libstdc++-v3/testsuite/25_algorithms/generate_n/87982_neg.cc
trunk/libstdc++-v3/testsuite/25_algorithms/generate_n/dr426.cc
Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/bits/stl_algo.h
trunk/libstdc++-v3/include/bits/stl_algobase.h
More information about the Libstdc++-cvs
mailing list