This implements all the ranges members defined in [specialized.algorithms]: ranges::uninitialized_default_construct ranges::uninitialized_value_construct ranges::uninitialized_copy ranges::uninitialized_copy_n ranges::uninitialized_move ranges::uninitialized_move_n ranges::uninitialized_fill ranges::uninitialized_fill_n ranges::construct_at ranges::destroy_at ranges::destroy It also implements (hopefully correctly) the "obvious" optimizations for these algos, namely that if the output range has a trivial value type and if the appropriate operation won't throw then we can dispatch to the standard ranges version of the algorithm which will then potentially enable further optimizations. libstdc++-v3/ChangeLog: * include/Makefile.am: Add <bits/ranges_uninitialized.h>. * include/Makefile.in: Regenerate. * include/bits/ranges_uninitialized.h: New header. * include/std/memory: Include it. * testsuite/20_util/specialized_algorithms/destroy/constrained.cc: New test. * .../uninitialized_copy/constrained.cc: New test. * .../uninitialized_default_construct/constrained.cc: New test. * .../uninitialized_fill/constrained.cc: New test. * .../uninitialized_move/constrained.cc: New test. * .../uninitialized_value_construct/constrained.cc: New test.
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| construct_at | Loading commit data... | |
| destroy | Loading commit data... | |
| memory_management_tools | Loading commit data... | |
| pstl | Loading commit data... | |
| uninitialized_copy | Loading commit data... | |
| uninitialized_copy_n | Loading commit data... | |
| uninitialized_default_construct | Loading commit data... | |
| uninitialized_fill | Loading commit data... | |
| uninitialized_fill_n | Loading commit data... | |
| uninitialized_move | Loading commit data... | |
| uninitialized_value_construct | Loading commit data... |