you can use a std::unique_lock with std::defer_lock. It tells the unique_lock to not lock the mutex immediately, but to build the RAII wrapper.
std::unique_locklk1(mutex1,std::defer_lock);
std::unique_locklk2(mutex2,std::defer_lock);
std::lock(lk1, lk2);