title: std::scoped_lock or std::unique_lock or std::lock_guard?
body: <p>From <a href="https://stackoverflow.com/questions/43019598/stdlock-guard-or-stdscoped-lock">this</a> question I understand that <code>std::scoped_lock</code> is "a strictly superior version of <code>std::lock_guard</code>". </p>
  
  <p>From <a href="https://stackoverflow.com/questions/20516773/stdunique-lockstdmutex-or-stdlock-guardstdmutex">this</a> question I understand that "<code>std::lock_guard</code> and <code>std::unique_lock</code> are the same" except that <code>std::unique_lock</code> has some extra features (eg. <a href="https://en.cppreference.com/w/cpp/thread/unique_lock" rel="noreferrer"><code>try_lock</code></a>) at the cost of some additional overhead.</p>
  
  <p><strong>How does <code>std::scoped_lock</code> compare with <code>std::unique_lock</code>?</strong></p>
  
  <p>Some related questions that I am hoping to get answered by this question.</p>
  
  <ol>
  <li>What are the differences between <code>std::scoped_lock</code> and <code>std::unique_lock</code>?</li>
  <li>In what situations should you use <code>std::scoped_lock</code> instead of <code>std::unique_lock</code>?</li>
  <li>In what situations should you use <code>std::unique_lock</code> instead of <code>std::scoped_lock</code>?</li>
  <li>Why does <code>std::scoped_lock</code> not implement some of the additional features of <code>std::unique_lock</code>?</li>
  </ol>