4#ifndef _Stroika_Foundation_Execution_VirtualLockable_h_
5#define _Stroika_Foundation_Execution_VirtualLockable_h_ 1
7#include "Stroika/Foundation/StroikaPreComp.h"
11#include "Stroika/Foundation/Common/Common.h"
41 template <Common::StdCompat::Lockable REAL_MUTEX>
59 nonvirtual
void lock ();
60 nonvirtual
bool try_lock ();
61 nonvirtual
void unlock ();
65 virtual ~IRep_ () =
default;
66 virtual void lock () = 0;
67 virtual bool try_lock () = 0;
68 virtual void unlock () = 0;
70 unique_ptr<IRep_> fRep_;
72 static_assert (movable<VirtualLockable>);
73 static_assert (not copyable<VirtualLockable>);
83#include "VirtualLockable.inl"
static VirtualLockable Make()
Logically the C++ standard Lockable named requirement, but that was not included in std c++ library.