Namespaces
Variants

std::shared_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::future 不同, std::shared_future 的共享状态在调用 get() 时不会失效。

若在未引用共享状态的 shared_future 上调用除析构函数、复制赋值运算符、移动赋值运算符或 valid 之外的任何成员函数,其行为未定义(尽管鼓励实现在这种情况下抛出 std::future_error 并指示 no_state )。对于 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

另请参阅

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