template<typename CRTP, typename CRTPCTX>
struct st::shared_context< CRTP, CRTPCTX >
CRTP-templated interface to provide shared context api.
Implements the the shared API between objects in this library which act as abstracted shared pointers. By inheritting this template a type can guarantee
that it has a standardized implementation for various basic operators:
!= < = bool conversion
As well as standardized implementation for accessing the underlying pointer (of type CRTPCTX) which contains the real implementation: ctx() -> shared_ptr<CRTPCTX>& // getter ctx(shared_ptr<CRTPCTX>) -> void // setter
CRTP: curiously recurring template pattern, this should be equal to the child type which is implementing this object. IE: struct object : shared_context<object, object_context> A CRTP type's methods typically are abstracted indirect calls to a CRTPCTX's methods.
CRTPCTX: the CRTP's context type. This is the underlying (typically private, or hidden) type which contains the actual data and implementation for an object.