14 template <
typename THIS_CONTAINER,
typename BASE_CONTAINER,
bool USING_IREP>
15 template <
typename... ARGS>
16 inline SkipListBasedContainer<THIS_CONTAINER, BASE_CONTAINER, USING_IREP>::SkipListBasedContainer (ARGS... args)
17 : BASE_CONTAINER{forward<ARGS> (args)...}
20 template <
typename THIS_CONTAINER,
typename BASE_CONTAINER,
bool USING_IREP>
21 inline void SkipListBasedContainer<THIS_CONTAINER, BASE_CONTAINER, USING_IREP>::ReBalance ()
23 if constexpr (USING_IREP) {
24 using _SafeReadWriteRepAccessor =
typename THIS_CONTAINER::template _SafeReadWriteRepAccessor<typename THIS_CONTAINER::IImplRepBase_>;
25 _SafeReadWriteRepAccessor{
this}._GetWriteableRep ().ReBalance ();
28 using _SafeReadWriteRepAccessor =
typename THIS_CONTAINER::template _SafeReadWriteRepAccessor<typename THIS_CONTAINER::Rep_>;
29 return _SafeReadWriteRepAccessor{
this}._GetWriteableRep ().fData_.ReBalance ();
38 template <
typename THIS_CONTAINER_REP,
typename BASE_CONTAINER_REP>
39 template <
typename... ARGS>
40 inline SkipListBasedContainerRepImpl<THIS_CONTAINER_REP, BASE_CONTAINER_REP>::SkipListBasedContainerRepImpl (ARGS... args)
41 : BASE_CONTAINER_REP{forward<ARGS> (args)...}
44 template <
typename THIS_CONTAINER_REP,
typename BASE_CONTAINER_REP>
45 void SkipListBasedContainerRepImpl<THIS_CONTAINER_REP, BASE_CONTAINER_REP>::ReBalance ()
47 Debug::AssertExternallySynchronizedMutex::WriteContext declareContext{Debug::UncheckedDynamicCast<THIS_CONTAINER_REP*> (
this)->fData_};
48 Debug::UncheckedDynamicCast<THIS_CONTAINER_REP*> (
this)->fData_.ReBalance ();
49 Debug::UncheckedDynamicCast<THIS_CONTAINER_REP*> (
this)->fChangeCounts_.PerformedChange ();