std::basic_stacktrace<Allocator>::operator=
來自 cppreference.com
< cpp | 工具庫 | basic_stacktrace
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)
|| std::allocator_traits<Allocator>::is_always_equal::value)
[編輯] 注意
在容器移動賦值(過載 (2))之後,除非由於不相容的分配器而強制進行逐元素移動賦值,否則對 `other` 的引用、指標和迭代器(末尾迭代器除外)仍然有效,但它們指向的元素現在在 `*this` 中。當前標準透過 [container.reqmts]/67 中的一般宣告保證了這一點,並且正在透過 LWG issue 2321 考慮更直接的保證。
[編輯] 示例
本節不完整 原因:無示例 |
[編輯] 另請參閱
建立一個新的 basic_stacktrace (公共成員函式) |