std::basic_stacktrace<Allocator>:: operator=
From ja.cppreference.net
<
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 は、実装が例外仕様を強化する場合、割り当て失敗時に空に設定される可能性があります。
目次パラメータ
戻り値* 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))、互換性のないアロケータによる要素単位のムーブ代入が強制されない限り、元々 例
関連項目
|