Namespaces
Variants

std::basic_stacktrace<Allocator>:: operator=

From 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)