# std::basic_stacktrace<Allocator>::current

< cpp‎ | utility‎ | basic stacktrace

static basic_stacktrace current( const allocator_type& alloc = allocator_type() ) noexcept; | (1) | (C++23 起)
static basic_stacktrace current( size_type skip, const allocator_type& alloc = allocator_type() ) noexcept; | (2) | (C++23 起)
static basic_stacktrace current( size_type skip, size_type max_depth, const allocator_type& alloc = allocator_type() ) noexcept; | (3) | (C++23 起)

令 s[i] (0 ≤ `i` < `n`) 代表当前执行线程中当前求值的第 `i+1` 个栈踪条目，其中 `n` 为栈踪中的栈踪条目数。

1) 试图创建由 s[0]、 s[1] …… s[n - 1] 组成的 `basic_stacktrace` 。
2) 试图创建由 s[m]、 s[m + 1] …… s[n - 1] 组成的 `basic_stacktrace` ，其中 `m` 为 `min(skip, n)` 。
3) 试图创建由 s[m]、 s[m + 1] …… s[o - 1] 组成的 `basic_stacktrace` ，其中 `m` 为 `min(skip, n)` 而 `o` 为 `min(skip + max_depth, n)` 。若 skip + max_depth < skip （即 skip + max_depth 的数学结果上溢）则行为未定义。

所有情况下，存储 `alloc` 到创建的 `basic_stacktrace` 中并用它分配栈踪条目的存储。

### 参数

alloc | - | 用于构造的 `basic_stacktrace` 的所有内存分配的分配器
skip | - | 要跳过的栈踪条目数
max_depth | - | 栈踪条目的最大深度

### 返回值

若分配成功则为如上描述的 `basic_stacktrace` 。

否则为空的 `basic_stacktrace` 。

### 示例

| 本节未完成 原因：暂无示例

### 参阅

(构造函数) (C++23) | 创建新的 `basic_stacktrace` (公开成员函数)
current [静态] | 构造对应调用点位置的新 `source_location` (`std::source_location` 的公开静态成员函数)