26 namespace catapult {
namespace deltaset {
29 template<typename TSet, typename X = decltype((*reinterpret_cast<TSet*>(0)).lower_bound(
typename TSet::value_type()))>
31 auto iter = elements.lower_bound(pruningBoundary.
value());
32 elements.erase(elements.cbegin(), iter);
38 std::remove_const_t<typename T::ElementType>,
39 std::less<typename T::ElementType>>;
42 template<
typename TSetTraits>
44 template<
typename TPruningBoundary>
46 typename TSetTraits::SetType& elements,
48 const TPruningBoundary& pruningBoundary) {
49 UpdateSet<typename TSetTraits::KeyTraits>(elements, deltas);
51 if (pruningBoundary.isSet())
58 template<
typename TElementTraits,
typename TStorageTraits = SetStorageTraits<detail::OrderedSetType<TElementTraits>>>
59 class OrderedSet :
public BaseSet<TElementTraits, TStorageTraits, detail::OrderedSetCommitPolicy<TStorageTraits>> {
64 using BaseType::BaseType;
68 template<
typename TElementTraits,
typename TStorageTraits = SetStorageTraits<detail::OrderedSetType<TElementTraits>>>