名前空間
変種
操作

std::basic_stacktrace<Allocator>::operator=

From 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<allocator_type>::propagate_on_container_copy_assignment::valuetrue の場合、 *this のアロケータは other のコピーに置き換えられます。代入後の *this のアロケータが古い値と等しくない比較される場合、古いアロケータはメモリを解放するために使用され、次に新しいアロケータがエントリをコピーするために使用されます。それ以外の場合、 *this が所有するメモリは、可能であれば再利用されることがあります。
2) ムーブ代入演算子。ムーブセマンティクスを使用して、 other の内容を置き換えます(すなわち、 other のデータは other から *this に移動されます)。 other はその後、有効だが未指定の状態になります。
std::allocator_traits<allocator_type>::propagate_on_container_move_assignment::valuetrue の場合、 *this のアロケータは other のコピーに置き換えられます。 false で、 *thisother のアロケータが等しく比較されない場合、 *thisother が所有するメモリの所有権を取得できず、必要に応じて追加のメモリを自身のアロケータを使用して割り当てながら、各エントリを個別に代入する必要があります。

いずれの場合も、元々 *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 を生成する
(public member function) [編集]
English 日本語 中文(简体) 中文(繁體)