std::basic_stacktrace<Allocator>::basic_stacktrace

来自cppreference.com
 
 
 
 
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.requirements.general]/12 中的总括陈述作出此保证,而 LWG 问题 2321 正在考虑更严格的保证。

示例

参阅

赋值给 basic_stacktrace
(公开成员函数)
[静态]
获得当前栈踪或其给定部分
(公开静态成员函数)