template< class ForwardIt >
void destroy( ForwardIt first, ForwardIt last );
template< class ExecutionPolicy, class ForwardIt >
void destroy( ExecutionPolicy&& policy, ForwardIt first, ForwardIt last );
Destroys the objects in the range
[
first,
last)
, 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, last - the pair of iterators defining the range 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] Complexity
Linear in the distance between first and last.
[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> constexpr // since C++20 void destroy(ForwardIt first, ForwardIt last) { for (; first != last; ++first) std::destroy_at(std::addressof(*first)); }[edit] Example
The following example demonstrates how to use destroy
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(ptr, 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