Пространства имён
Варианты
Действия

std::basic_stacktrace<Allocator>::basic_stacktrace

Материал из cppreference.com
 
 
Библиотека диагностики
Обработка исключений
Сбои обработки исключений
(до C++17*)
(до C++17*)
(C++11)(до C++17*)    
(до C++17*)
Коды ошибок
Коды ошибок
Категории исключений
(ТС TM)
Поддержка системных ошибок
(C++11)
(C++11)
Утверждения
Трассировка стека
 
 
<tbody> </tbody>
basic_stacktrace() noexcept(/* смотрите ниже */);
(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) Создаёт пустой basic_stacktrace, используя alloc в качестве аллокатора.
3) Конструктор копирования. Создаёт basic_stacktrace с копией содержимого other, аллокатор получается, как если бы вызовом std::allocator_traits<allocator_type>::select_on_container_copy_construction(other.get_allocator()).
4) Конструктор перемещения. Создаёт basic_stacktrace с содержимым other, используя семантику перемещения. Аллокатор создаётся путём перемещения из 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) Линейная по размеру other, если alloc != other.get_allocator(), иначе константная.

Примечание

После создания перемещением контейнера (перегрузка (4)), ссылки, указатели и итераторы (кроме конечного итератора) на other остаются действительными, но ссылаются на элементы которые сейчас находятся в *this. Текущий стандарт делает эту гарантию с помощью общего заявления в [container.reqmts]/67, и более прямая гарантия находится на рассмотрении через LWG проблема 2321.

Пример

Смотрите также

присваивает классу basic_stacktrace
(public функция-элемент) [править]
[static]
получает текущую трассировку стека или её заданную часть
(public static функция-элемент) [править]