# std::allocator_traits<Alloc>::destroy

< cpp‎ | memory‎ | allocator traits

定义于头文件 `<memory>` |  |
template< class T > static void destroy( Alloc& a, T* p ); |  | (C++11 起) (C++20 前)
template< class T > static constexpr void destroy( Alloc& a, T* p ); |  | (C++20 起)

调用 `p` 所指向对象的析构函数。若可能，则通过调用 a.destroy(p) 这么做。若不可能（例如 `Alloc` 无成员函数 `destroy()` ），则直接调用 `*p` 的析构函数，同 p->~T() (C++20 前) std::destroy_at(p) (C++20 起) 。

### 参数

a | - | 用于析构的分配器
p | - | 指向要被销毁的对象的指针

### 返回值

（无）

### 注解

因为此函数提供到析构函数的自动回落，故 C++11 起成员函数 `destroy()` 是分配器 (Allocator) 的可选要求。

### 参阅

destroy (C++17 中弃用)(C++20 中移除) | 析构在已分配存储中的对象 (`std::allocator<T>` 的公开成员函数)