Namespaces
Variants

std::move_only_function::operator=

ja.cppreference.net より
 
 
ユーティリティライブラリ
言語サポート
型サポート (基本型、RTTI)
ライブラリ機能テストマクロ (C++20)
プログラムユーティリティ
可変引数関数
コルーチンサポート (C++20)
契約サポート (C++26)
三方比較
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

汎用ユーティリティ
関係演算子 (C++20で非推奨)
整数比較関数
(C++20)(C++20)(C++20)    
(C++20)
Swap と 型操作
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
共通語彙型
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)



 
関数オブジェクト
関数呼び出し
(C++17)(C++23)
恒等関数オブジェクト
(C++20)
透過的な演算子ラッパー
(C++14)
(C++14)
(C++14)
(C++14)  
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)

旧来のバインダとアダプタ
(C++17まで*)
(C++17まで*)
(C++17まで*)
(C++17まで*)  
(C++17まで*)
(C++17まで*)(C++17まで*)(C++17まで*)(C++17まで*)
(C++20まで*)
(C++20まで*)
(C++17まで*)(C++17まで*)
(C++17まで*)(C++17まで*)

(C++17まで*)
(C++17まで*)(C++17まで*)(C++17まで*)(C++17まで*)
(C++20まで*)
(C++20まで*)
 
 
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は、ムーブ代入後、未規定の値を持つ有効な状態となる。
2) コピー代入演算子は削除される。 std::move_only_functionはCopyAssignableを満たさない。
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...)> の公開メンバ関数)