template< class ForwardIt, class Size >
ForwardIt destroy_n( ForwardIt first, Size n );
template< class ForwardIt, class Size >
constexpr ForwardIt destroy_n( ForwardIt first, Size n );
template< class ExecutionPolicy, class ForwardIt, class Size >
ForwardIt destroy_n( ExecutionPolicy&& policy, ForwardIt first, Size n );
Destroys the
nobjects in the range starting at
first, as if by
2)Same as
(1), but executed according to
policy. This overload participates in overload resolution only if all following conditions are satisfied:
[edit] Parameters first - the beginning of the range of elements to destroy n - the number of elements to destroy policy - the execution policy to use Type requirements -ForwardIt
must meet the requirements of LegacyForwardIterator. -No increment, assignment, comparison, or indirection through valid instances of ForwardIt
may throw exceptions. [edit] Return value
The end of the range of objects that has been destroyed (i.e., std::next(first, n)).
[edit] ComplexityLinear in n.
[edit] ExceptionsThe overload with a template parameter named ExecutionPolicy
reports errors as follows:
ExecutionPolicy
is one of the standard policies, std::terminate is called. For any other ExecutionPolicy
, the behavior is implementation-defined.template<class ForwardIt, class Size> constexpr // since C++20 ForwardIt destroy_n(ForwardIt first, Size n) { for (; n > 0; (void) ++first, --n) std::destroy_at(std::addressof(*first)); return first; }[edit] Example
The following example demonstrates how to use destroy_n
to destroy a contiguous sequence of elements.
#include <iostream> #include <memory> #include <new> struct Tracer { int value; ~Tracer() { std::cout << value << " destructed\n"; } }; int main() { alignas(Tracer) unsigned char buffer[sizeof(Tracer) * 8]; for (int i = 0; i != 8; ++i) new(buffer + sizeof(Tracer) * i) Tracer{i}; // manually construct objects auto ptr = std::launder(reinterpret_cast<Tracer*>(buffer)); std::destroy_n(ptr, 8); }
Output:
0 destructed 1 destructed 2 destructed 3 destructed 4 destructed 5 destructed 6 destructed 7 destructed[edit] See also
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4