std::basic_stacktrace<Allocator>::operator=
From cppreference.com
< cpp | utility | 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<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(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 を生成する(public member function) |