Namespaces
Variants

std::future<T>:: valid

From cppreference.net

Concurrency support library
Threads
(C++11)
(C++20)
this_thread namespace
(C++11)
(C++11)
Cooperative cancellation
Mutual exclusion
Generic lock management
Condition variables
(C++11)
Semaphores
Latches and Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
Safe reclamation
Hazard pointers
Atomic types
(C++11)
(C++20)
Initialization of atomic types
(C++11) (deprecated in C++20)
(C++11) (deprecated in C++20)
Memory ordering
(C++11) (deprecated in C++26)
Free functions for atomic operations
Free functions for atomic flags
bool valid ( ) const noexcept ;
(自 C++11 起)

检查该 future 是否引用共享状态。

这种情况仅适用于非默认构造或移动来源的future(即由 std::promise::get_future() std::packaged_task::get_future() std::async() 返回的future),直到首次调用 get() share() 之前。

若在未引用共享状态的 future 上调用除析构函数、移动赋值运算符或 valid 之外的任何成员函数,其行为未定义(尽管鼓励实现在这种情况下抛出 std::future_error 并指示 no_state )。对于 valid() false 的 future 对象进行移动操作是合法的。

目录

参数

(无)

返回值

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

示例

#include <future>
#include <iostream>
int main()
{
    std::promise<void> p;
    std::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
false

另请参阅

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