名稱空間
變體
操作

std::basic_stacktrace<Allocator>::operator=

來自 cppreference.com
 
 
 
 
basic_stacktrace& operator=( const basic_stacktrace& other );
(1) (C++23 起)
basic_stacktrace& operator=( basic_stacktrace&& other )
    noexcept(/* 見下 */);
(2) (C++23 起)

替換 `basic_stacktrace` 的內容。

1) 複製賦值運算子。用 `other` 內容的副本替換內容。
如果 `std::allocator_traits::propagate_on_container_copy_assignment::value` 為 `true`,則 `*this` 的分配器將被 `other` 分配器的副本替換。如果賦值後 `*this` 的分配器與其舊值不相等,則舊分配器用於釋放記憶體,然後新分配器用於在複製條目之前分配記憶體。否則,`*this` 擁有的記憶體可能會在可能的情況下被重用。
2) 移動賦值運算子。使用移動語義替換 `other` 的內容(即 `other` 中的資料從 `other` 移動到 `*this`)。之後 `other` 處於有效但未指定的狀態。
如果 `std::allocator_traits::propagate_on_container_move_assignment::value` 為 `true`,則 `*this` 的分配器將被 `other` 分配器的副本替換。如果為 `false` 並且 `*this` 和 `other` 的分配器不相等,則 `*this` 不能擁有 `other` 擁有的記憶體,必須單獨分配每個條目,根據需要使用自己的分配器分配額外的記憶體。

在任何情況下,最初屬於 `*this` 的棧追蹤條目可能會被銷燬或被逐元素賦值替換。

如果實現強化了異常規範,則 `*this` 在分配失敗時可能被設定為空。

目錄

[編輯] 引數

其他 - 另一個 `basic_stacktrace` 作為源

[編輯] 返回值

*this

[編輯] 複雜度

1) 與 `*this` 和 `other` 的大小呈線性關係。
2) 與 `*this` 的大小呈線性關係,除非分配器不相等且不傳播,在這種情況下與 `*this` 和 `other` 的大小呈線性關係。

[編輯] 異常

1) 可能會丟擲實現定義的異常。
2)
noexcept 規範:  
noexcept(std::allocator_traits<Allocator>::propagate_on_container_move_assignment::value
|| std::allocator_traits<Allocator>::is_always_equal::value)

[編輯] 注意

在容器移動賦值(過載 (2))之後,除非由於不相容的分配器而強制進行逐元素移動賦值,否則對 `other` 的引用、指標和迭代器(末尾迭代器除外)仍然有效,但它們指向的元素現在在 `*this` 中。當前標準透過 [container.reqmts]/67 中的一般宣告保證了這一點,並且正在透過 LWG issue 2321 考慮更直接的保證。

[編輯] 示例

[編輯] 另請參閱

建立一個新的 basic_stacktrace
(公共成員函式) [編輯]