stop_source& operator=(const stop_source& r) noexcept; // (1)
stop_source& operator=(stop_source&& r) noexcept; // (2)
概要
- (1) : コピー代入演算子。
- (2) : ムーブ代入演算子。
効果
- (1) :
stop_source(r).swap(*this)
。これによって*this == r
となる。 - (2) :
stop_source(std::move(r)).swap(*this)
。これによって、r.stop_possible() == true
となる。
戻り値
*this
例外
投げない。
例
#include <cassert>
#include <stop_token>
int main()
{
std::stop_source ss1;
std::stop_source ss2(std::nostopstate);
std::stop_source ss3(std::nostopstate);
assert(ss1.stop_possible() == true);
assert(ss2.stop_possible() == false);
assert(ss1.stop_requested() == false);
assert(ss2.stop_requested() == false);
// (1) コピー代入演算子
ss2 = ss1;
assert(ss2 == ss1);
assert(ss1.stop_possible() == true);
assert(ss2.stop_possible() == true);
// (2) ムーブ代入演算子
ss3 = std::move(ss1);
assert(ss1.stop_possible() == false);
assert(ss3.stop_possible() == true);
ss2.request_stop();
assert(ss1.stop_requested() == false);
assert(ss2.stop_requested() == true);
assert(ss3.stop_requested() == true);
}
出力
バージョン
言語
- C++20
処理系
- GCC: ??
- Clang: ??
- ICC: ??
- Visual C++: ??