1*7a6aaf9bSLouis Dionne //===----------------------------------------------------------------------===// 2*7a6aaf9bSLouis Dionne // 3*7a6aaf9bSLouis Dionne // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*7a6aaf9bSLouis Dionne // See https://llvm.org/LICENSE.txt for license information. 5*7a6aaf9bSLouis Dionne // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*7a6aaf9bSLouis Dionne // 7*7a6aaf9bSLouis Dionne //===----------------------------------------------------------------------===// 8*7a6aaf9bSLouis Dionne 9*7a6aaf9bSLouis Dionne // <mutex> 10*7a6aaf9bSLouis Dionne 11*7a6aaf9bSLouis Dionne // template <class Mutex> class unique_lock; 12*7a6aaf9bSLouis Dionne 13*7a6aaf9bSLouis Dionne // unique_lock& operator=(unique_lock const&) = delete; 14*7a6aaf9bSLouis Dionne 15*7a6aaf9bSLouis Dionne #include <mutex> 16*7a6aaf9bSLouis Dionne #include <cassert> 17*7a6aaf9bSLouis Dionne main(int,char **)18*7a6aaf9bSLouis Dionneint main(int, char**) 19*7a6aaf9bSLouis Dionne { 20*7a6aaf9bSLouis Dionne { 21*7a6aaf9bSLouis Dionne typedef std::mutex M; 22*7a6aaf9bSLouis Dionne M m0; 23*7a6aaf9bSLouis Dionne M m1; 24*7a6aaf9bSLouis Dionne std::unique_lock<M> lk0(m0); 25*7a6aaf9bSLouis Dionne std::unique_lock<M> lk1(m1); 26*7a6aaf9bSLouis Dionne lk1 = lk0; 27*7a6aaf9bSLouis Dionne assert(lk1.mutex() == &m0); 28*7a6aaf9bSLouis Dionne assert(lk1.owns_lock() == true); 29*7a6aaf9bSLouis Dionne assert(lk0.mutex() == nullptr); 30*7a6aaf9bSLouis Dionne assert(lk0.owns_lock() == false); 31*7a6aaf9bSLouis Dionne } 32*7a6aaf9bSLouis Dionne 33*7a6aaf9bSLouis Dionne return 0; 34*7a6aaf9bSLouis Dionne } 35