Hi,

the current definition of std::stop_source::stop_possible() [1] states that:

Returns: true if *this has ownership of a stop state; otherwise, false.

and the current definition of std::stop_source::stop_requested() [2] states that:

Returns: true if *this has ownership of a stop state that has received a stop request; otherwise, false.

from these requirements it appears that stop_requested() will never return true if stop_possible() return false, but this is exactly what is required as a post condition of std::stop_source::request_stop() [3], where it says:

Postconditions: stop_­possible() is false or stop_­requested() is true.

The issue here appears to be in the definition of std::stop_source::stop_possible() that should be made equivalent to the definition of std::stop_token::stop_possible() [4], something like:

Returns: true if *this has ownership of a stop state and a stop request was not made; otherwise, false.

Is this really an issue? If it is, will it be considered an editorial issue or a defect?

Thanks.

[1] https://eel.is/c++draft/thread.stoptoken#stopsource.mem-2
[2] https://eel.is/c++draft/thread.stoptoken#stopsource.mem-3
[3] https://eel.is/c++draft/thread.stoptoken#stopsource.mem-5
[4] https://eel.is/c++draft/thread.stoptoken#stoptoken.mem-2