title: VS 2017 program not recognizing "scoped_lock"
body: <p>I've been having issues using scoped_locked in VS 2017. I believe I traced them back to the <code>&lt;mutex&gt;</code> declaration, copied below. What would be the safest way to disable the <code>#if</code> switch at the beginning to gain use to scoped_lock? Thanks again.</p>
  
  <pre><code>#if _HAS_CXX17
  // CLASS TEMPLATE scoped_lock
  template&lt;class... _Mutexes&gt;
  class scoped_lock
  {   // class with destructor that unlocks mutexes
  public:
      explicit scoped_lock(_Mutexes&amp;... _Mtxes)
      : _MyMutexes(_Mtxes...)
      {   // construct and lock
      _STD lock(_Mtxes...);
      }
  
      explicit scoped_lock(adopt_lock_t, _Mutexes&amp;... _Mtxes)
      : _MyMutexes(_Mtxes...)
      {   // construct but don't lock
      }
  
      ~scoped_lock() _NOEXCEPT
      {   // unlock all
      _For_each_tuple_element(
          _MyMutexes,
          [](auto&amp; _Mutex) _NOEXCEPT { _Mutex.unlock(); });
      }
  
      scoped_lock(const scoped_lock&amp;) = delete;
      scoped_lock&amp; operator=(const scoped_lock&amp;) = delete;
  private:
      tuple&lt;_Mutexes&amp;...&gt; _MyMutexes;
  };
  </code></pre>