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"
46 template <Common::StdCompat::Lockable REAL_MUTEX>
64 nonvirtual
void lock ();
65 nonvirtual
bool try_lock ();
66 nonvirtual
void unlock ();
70 virtual ~IRep_ () =
default;
71 virtual void lock () = 0;
72 virtual bool try_lock () = 0;
73 virtual void unlock () = 0;
75 unique_ptr<IRep_> fRep_;
77 static_assert (movable<VirtualLockable>);
78 static_assert (not copyable<VirtualLockable>);
88#include "VirtualLockable.inl"
static VirtualLockable Make()
Logically the C++ standard Lockable named requirement, but that was not included in std c++ library.