requires(L m) { {m.lock()}; {m.unlock()}; }
requires(L m) { {m.try_lock()} -> bool; };
//requires(L m) //{ //{m.try_lock_for()}; //{m.try_lock_until()}; //};
Requirements are not yet inforced because gcc cannot handle implicit template instantiations in requires expressions.
requires
requires(M m) { {m.lock_shared()}; {m.try_lock_shared()}; {m.unlock_shared()}; }
//requires(M m) //{ //{m.try_lock_shared_for()}; //{m.try_lock_shared_until()}; //};