Namespaces
Variants

std::basic_stacktrace<Allocator>:: operator=

From ja.cppreference.net
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 < allocator_type > :: propagate_on_container_copy_assignment :: value が true の場合、 * this のアロケータは other のアロケータのコピーで置き換えられる。代入後の * this のアロケータが元の値と等しくないと比較される場合、古いアロケータを使用してメモリを解放した後、新しいアロケータを使用してエントリをコピーする前にメモリを再確保する。それ以外の場合、 * this が所有するメモリは可能な場合に再利用される。
2) ムーブ代入演算子。内容を other の内容で置き換える(ムーブセマンティクスを使用、すなわち other のデータが other から * this にムーブされる)。 other はその後、有効だが未規定の状態となる。
std:: allocator_traits < allocator_type > :: 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指定:
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 を作成する
(public member function)