+ \p Options are:
+ - \p opt::compare - key compare functor. No default functor is provided.
+ If the option is not specified, \p %opt::less is used.
+ - \p opt::less - specifies binary predicate used for key compare. At least \p %opt::compare or \p %opt::less should be defined.
+ - \p opt::item_counter - the type of item counter, default is disabled (\p atomicity::empty_item_counter).
+ To enable it use \p atomicity::item_counter
+ - opt::memory_model - C++ memory ordering model. Can be \p opt::v::relaxed_ordering (relaxed memory model, the default)
+ or \p opt::v::sequential_consistent (sequentially consisnent memory model).
+ - \p opt::allocator - the allocator used for \ref ellen_bintree::map_node "leaf nodes" which contains data.
+ Default is \ref CDS_DEFAULT_ALLOCATOR.
+ - \p opt::node_allocator - the allocator used for \ref ellen_bintree::internal_node "internal nodes".
+ Default is \ref CDS_DEFAULT_ALLOCATOR.
+ - \p ellen_bintree::update_desc_allocator - an allocator of \ref ellen_bintree::update_desc "update descriptors",
+ default is \ref CDS_DEFAULT_ALLOCATOR.
+ Note that update descriptor is helping data structure with short lifetime and it is good candidate for pooling.
+ The number of simultaneously existing descriptors is a relatively small number limited the number of threads
+ working with the tree and RCU buffer size.
+ Therefore, a bounded lock-free container like \p cds::container::VyukovMPMCCycleQueue is good choice for the free-list
+ of update descriptors, see \p cds::memory::vyukov_queue_pool free-list implementation.
+ Also notice that size of update descriptor is not dependent on the type of data
+ stored in the tree so single free-list object can be used for several EllenBinTree-based object.
+ - \p opt::stat - internal statistics, by default disabled (\p ellen_bintree::empty_stat). To enable
+ it use \p ellen_bintree::stat.
+ - \p opt::backoff - back-off strategy, by default no strategy is used (\p cds::backoff::empty)
+ - \p opt::rcu_check_deadlock - a deadlock checking policy, only for RCU-based tree. Default is \p opt::v::rcu_throw_deadlock
+ - opt::copy_policy - key copying policy defines a functor to copy leaf node's key to internal node.
+ By default, assignment operator is used.
+ The copy functor interface is:
+ \code
+ struct copy_functor {
+ void operator()( Key& dest, Key const& src );
+ };
+ \endcode