std::shared_future<T>::valid

来自cppreference.com

 
 
并发支持库
线程
(C++11)
(C++20)
(C++20)
this_thread 命名空间
(C++11)
(C++11)
(C++11)
原子类型
(C++11)
(C++20)
原子类型的初始化
(C++11)(C++20 中弃用)
(C++11)(C++20 中弃用)
原子操作的自由函数
原子标志的自由函数
内存序
互斥
(C++11)
通用锁管理
(C++11)
(C++11)
(C++11)
(C++11)(C++11)(C++11)
(C++11)
(C++11)
条件变量
(C++11)
信号量
闩与屏障
(C++20)
(C++20)
future
(C++11)
(C++11)
(C++11)
(C++11)
 
 
bool valid() const noexcept;
(C++11 起)

检查期货是否指代共享状态。

这是非默认构造或被移动的期货的仅有情况。不同于 std::future ,调用 get() 时不非法化 std::shared_future 的共享状态。

若在不指代共享状态的 shared_future 上调用任何析构函数、复制赋值运算符、移动赋值运算符或 valid 以外的成员函数,则行为未定义(尽管鼓励实现在此情况下抛出指示 no_statestd::future_error )。从 valid()false 的 shared_future 对象移动或复制是合法的。

参数

(无)

返回值

若 *this 指代共享状态则为 true ,否则为 false

示例

#include <future>
#include <iostream>
 
int main() {
    std::promise<void> p;
    std::shared_future<void> f = p.get_future();
 
    std::cout << std::boolalpha;
 
    std::cout << f.valid() << '\n';
    p.set_value();
    std::cout << f.valid() << '\n';
    f.get();
    std::cout << f.valid() << '\n';
}

输出:

true
true
true

参阅

等待结果变得可用
(公开成员函数)