std::move_only_function::operator=
ja.cppreference.net より
move_only_function& operator=( move_only_function&& other );
|
(1) | (C++23以上) |
move_only_function& operator=( const move_only_function& ) = delete;
|
(2) | (C++23以上) |
move_only_function& operator=( std::nullptr_t ) noexcept;
|
(3) | (C++23以上) |
template< class F >
move_only_function& operator=( F&& f );
|
(4) | (C++23以上) |
新しいターゲットをstd::move_only_functionに代入するか、そのターゲットを破棄する。
1)
otherのターゲットを*thisにムーブするか、*thisが空の場合はotherのターゲットを(もしあれば)auto(std::move(other)).swap(*this)によって破棄する。 otherは、ムーブ代入後、未規定の値を持つ有効な状態となる。3) 現在のターゲットが存在する場合はそれを破棄する。
*thisは呼び出し後、空になる。4)
*thisのターゲットを呼び出し可能なオブジェクトfに設定する。または、fがヌル関数ポインタ、ヌルメンバ関数ポインタ、もしくは空のstd::move_only_functionである場合は、現在のターゲットを破棄する。これはmove_only_function(std::forward<F>(f)).swap(*this);を実行したかのように行われる。このオーバーロードは、move_only_functionのコンストラクタがFからのものでオーバーロード解決に参加する場合にのみ、オーバーロード解決に参加する。選択されたコンストラクタ呼び出しが不正形式であるか未定義動作を引き起こす場合、プログラムは不正形式であるか、未定義動作を引き起こす。パラメータ
| other | - |
ターゲットを移動する別の
std::move_only_function
オブジェクト
|
| f | - | 新しいターゲットを初期化するための呼び出し可能オブジェクト |
戻り値
* this
注記
意図的にムーブ代入演算子に
noexcept
を要求しないのは、将来のアロケータ対応
move_only_function
の余地を残すためです。
move_only_function
は、その引数から構築可能である場合、
std::
in_place_type
<
Fn
>
から代入可能です。
例
|
このセクションは不完全です
理由: 例がありません |
関連項目
|
新しいターゲットを割り当てる
(
std::function<R(Args...)>
の公開メンバ関数)
|