C++ : why std::lock() supports deallock avoidence but std::try_lock() does not?