Namespaces
Variants

std::basic_stacktrace<Allocator>:: basic_stacktrace

From zh.cppreference.net
basic_stacktrace ( ) noexcept ( /* see below */ ) ;
(1) (自 C++23 起)
explicit basic_stacktrace ( const allocator_type & alloc ) noexcept ;
(2) (自 C++23 起)
basic_stacktrace ( const basic_stacktrace & other ) ;
(3) (自 C++23 起)
basic_stacktrace ( basic_stacktrace && other ) noexcept ;
(4) (自 C++23 起)
basic_stacktrace ( const basic_stacktrace & other,
const allocator_type & alloc ) ;
(5) (自 C++23 起)
basic_stacktrace ( basic_stacktrace && other, const allocator_type & alloc ) ;
(6) (自 C++23 起)

构造一个空的 basic_stacktrace ,或从 other 复制/移动。

1) 默认构造函数。构造一个空的 basic_stacktrace ,使用默认构造的分配器。
2) 使用 alloc 作为分配器构造一个空的 basic_stacktrace 。
3) 复制构造函数。构造一个内容与 other 相同的 basic_stacktrace ,其分配器通过调用 std:: allocator_traits < allocator_type > :: select_on_container_copy_construction ( other. get_allocator ( ) ) 获得。
4) 移动构造函数。使用移动语义构造一个包含 other 内容的 basic_stacktrace 。分配器从 other 的分配器移动构造。构造完成后, other 将处于有效但未指定的状态。
5) 与拷贝构造函数相同,区别在于使用 alloc 作为分配器。
6) 若 alloc == other. get_allocator ( ) 则行为与移动构造函数相同。否则,使用 alloc 分配内存并执行逐元素移动。 alloc 将作为分配器使用。

(3,5,6) 可能在分配失败时抛出异常或构造一个空的 basic_stacktrace 。

目录

参数

alloc - 用于构造的 basic_stacktrace 所有内存分配的分配器
other - 要从中复制/移动的另一个 basic_stacktrace

异常

1)
noexcept 规范:
noexcept ( std:: is_nothrow_default_constructible_v < allocator_type > )
3,5,6) 可能传播分配失败时抛出的异常。

复杂度

1,2) 常量。
3) 与 other 的大小成线性关系。
4) 常量。
5) 与 other 的大小成线性关系。
6) 当 alloc ! = other. get_allocator ( ) 时,与 other 的大小成线性关系,否则为常数时间复杂度。

注解

在容器移动构造(重载 (4))之后,原本指向 other 中元素的引用、指针和迭代器仍然有效,但指向的是现在位于 *this 中的元素。现行标准通过 [container.reqmts]/67 中的总括性声明提供了这一保证,而通过 LWG 问题 2321 考虑中的更直接的保证也在讨论中。

示例

参见

赋值给 basic_stacktrace
(公开成员函数)
[static]
获取当前堆栈轨迹或其指定部分
(公开静态成员函数)