std::future::valid(3)

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

πŸ’– std::future::valid πŸ’–

okay so bestie, welcome to the C++ Standard Libary manual β€” this page is literally std::future::valid(3), and it’s giving tiny bool, big consequences energy. 🫢

✨ NAME ✨

std::future::valid - std::future::valid

🌸 Synopsis 🌸

bool valid() const noexcept;  (since C++11)

Checks if the future refers to a shared state. Yes, that’s the whole assignment. πŸ’…

This is the case only for futures that were not default-constructed or moved from β€” like the ones returned by std::promise::get_future(), std::packaged_task::get_future() or std::async() β€” until the first time get() or share() is called. ⏳

🚨 The behavior is undefined if any member function other than the destructor, the move-assignment operator, or valid is called on a future that does not refer to shared state (although implementations are encouraged to throw std::future_error indicating no_state in this case). It is valid to move from a future object for which valid() is false. No cap.

πŸŽ€ Parameters πŸŽ€

(none) β€” she takes no parameters, periodt. πŸ’…

πŸ’« Return value πŸ’«

true if *this refers to a shared state, otherwise false.

πŸ¦‹ Example πŸ¦‹

// Run this code

#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';
}

🌈 Output 🌈

true
true
false

πŸ‘‘ See also πŸ‘‘

  • wait β€” waits for the result to become available (public member function)

xoxo, your C++ bestie πŸ’– β€” source: http://cppreference.com, version/date: 2024.06.10, page: std::future::valid(3). Mwah. πŸ’‹

πŸ“¦ where this page comes from