move_only_function& operator=(move_only_function&& f); // (1)
move_only_function& operator=(nullptr_t); noexcept; // (2)
template<class F>
move_only_function& operator=(F&& f); // (3)
効果
- (1) : ムーブ代入。
move_only_function(std::move(f)).swap(*this)
- (2) :
*this
が有効な関数ポインタ、メンバポインタ、もしくは関数オブジェクトを持っている場合、それを解放する。 - (3) :
move_only_function(std::forward<F>(f)).swap(*this)
戻り値
*this
例外
- (2) : 投げない
例
#include <iostream>
#include <functional>
int ident(int x) { return x; }
int main()
{
std::move_only_function<int(int)> f;
// 関数を代入
f = ident;
int result = f(1);
std::cout << result << std::endl;
}
出力
1
バージョン
言語
- C++23
処理系
- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??