最終更新日時: 2025年02月06日 10時48分43秒 (JST)
yoh が更新

履歴 編集

function
<rcu>

# std::rcu_obj_base::retire(C++26)

    void retire(D d = D(),
                rcu_domain& dom = rcu_default_domain()) noexcept;

## 概要

RCU機構により保護されるオブジェクト回収をスケジュールする。

## 適格要件

クラステンプレートパラメータ`T`が、下記条件を満たすRCU保護可能(rcu-protectable)な型であること。

- `rcu_obj_base<T,D>`型を唯一の基底クラスとして持つクラス型であり、かつ
- その基底は公開(public)かつ非仮想基底クラスであり、かつ
- 型`X`, `Y`の他の組合せに対して`rcu_obj_base<X, Y>`型を基底クラスとして持たない。

## 事前条件

- `*this`が型`T`のオブジェクト`x`の基底クラスサブオブジェクトであること。
- `x`に対して`rcu_obj_base<T,D>::retire`が呼び出されていないこと。
- `D`型の説明専用メンバ変数`deleter`への代入が例外で終了しないこと。

## 効果

- `deleter = std::move(d)`を評価し、
- RCUドメイン`dom`に対して式`deleter(addressof(x))`の評価をスケジュールする。
  - 評価が例外で終了した場合は未定義の動作を引き起こす。
- `dom`に対してスケジュールされた評価を呼び出す可能性がある。

## 戻り値

なし

## バージョン

### 言語

- C++26

### 処理系

- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??

## 関連項目

- `rcu_domain::unlock`
- `rcu_retire`

## 参照

- P2545R4 Read-Copy Update(RCU)