# std::shared_future<T>::valid

< cpp‎ | thread‎ | shared future

bool valid() const noexcept; |  | (C++11 起)

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

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

若在不指代共享状态的 `shared_future` 上调用任何析构函数、复制赋值运算符、移动赋值运算符或 `valid` 以外的成员函数，则行为未定义（尽管鼓励实现在此情况下抛出指示 `no_state` 的 std::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

### 参阅

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