41#ifndef LIB_DIFF_TREE_DIFF_TRAITS_H
42#define LIB_DIFF_TREE_DIFF_TRAITS_H
87 template<
class TAR,
typename SEL =
void>
105 return static_cast<T*
> (
nullptr);
130 using std::is_base_of;
143 enum{
value = HasFunSig_buildMutator<T>::value
144 and not is_base_of<DiffMutable, T>::value};
151 template<
class TAR,
typename SEL =
void>
155 static_assert (!
sizeof(TAR),
"TreeDiffTraits: Unable to access or build a TreeMutator for this target data.");
180 subject_.buildMutator (handle);
207 return Wrapper(subject);
A handle to allow for safe »remote implantation« of an unknown subclass into a given opaque InPlaceBu...
Marker or capability interface: an otherwise not further disclosed data structure,...
virtual void buildMutator(TreeMutator::Handle handle)
implement the TreeMutator interface, by forwarding to a known implementation function on the wrapped ...
helper to detect presence of a TreeMutator builder function
META_DETECT_FUNCTION(void, buildMutator,(TreeMutator::Handle))
Abstraction or descriptor interface for a data structure exposing the ability for mutation by receivi...
TreeDiffTraits< TAR >::Ret mutatorBinding(TAR &subject)
public access point to this configuration machinery
constexpr size_t treeMutatorSize(...)
constexpr T * getSelector()
Implementation namespace for support and library code.
Singleton-style holder for NIL or default values.
Heuristics to guide the allocation for nested TreeMutator.
Customisable intermediary to abstract generic tree mutation operations.
Tiny helper functions and shortcuts to be used everywhere Consider this header to be effectively incl...