A std::future
имеет метод std::future::valid
, который указывает, относится ли будущий объект к некоторому общему состоянию .Ни один из конструкторов не создает объект будущего, который ссылается на общее состояние (кроме конструктора перемещения, который может перемещать общее состояние из одного будущего объекта в другой). Все методы класса (get
, wait
, wait_for
и wait_until
требуют, чтобы у будущего объекта было общее состояние в качестве предварительного условия (они имеют неопределенное поведение, если valid() == false
). Как тогда std::future
может получить общее состояние и стать полезным?