({(void*)mPair.mFirst} = {*mPair.mFirst}) ({nullptr}) (void*)mPair.mFirst *mPair.mFirst ({(void*)mpValue} = {*mpValue}) ({nullptr}) (void*)mpValue *mpValue mpRefCount->mRefCount mpRefCount->mWeakRefCount {((mpRefCount && mpRefCount->mRefCount) ? mpValue : nullptr)} mpRefCount && mpRefCount->mRefCount ? mpValue : nullptr [{$T2}] {{}} [{$T2}] {{ {*mValue} }} [{$T2}] {{ {*mValue}, {*(mValue+1)} }} [{$T2}] {{ {*mValue}, {*(mValue+1)}, {*(mValue+2)} }} [{$T2}] {{ {*mValue}, {*(mValue+1)}, {*(mValue+2)}, {*(mValue+3)} }} [{$T2}] {{ {*mValue}, {*(mValue+1)}, {*(mValue+2)}, {*(mValue+3)}, {*(mValue+4)} }} [{$T2}] {{ {*mValue}, {*(mValue+1)}, {*(mValue+2)}, {*(mValue+3)}, {*(mValue+4)}, {*(mValue+5)} }} [{$T2}] {{ {*mValue}, {*(mValue+1)}, {*(mValue+2)}, {*(mValue+3)}, {*(mValue+4)}, {*(mValue+5)}, ... }} $T2 $T2 mValue "{mPair.mFirst.heap.mpBegin,sb}" "{mPair.mFirst.sso.mData,sb}" mPair.mFirst.heap.mnSize (mPair.mFirst.heap.mnCapacity & ~kHeapMask) mPair.mFirst.heap.mpBegin,sb (SSOLayout::SSO_CAPACITY - mPair.mFirst.sso.mRemainingSizeField.mnRemainingSize) SSOLayout::SSO_CAPACITY mPair.mFirst.sso.mData,sb !!(mPair.mFirst.sso.mRemainingSizeField.mnRemainingSize & kSSOMask) {mPair.mFirst.heap.mpBegin,su} {mPair.mFirst.sso.mData,su} mPair.mFirst.heap.mnSize (mPair.mFirst.heap.mnCapacity & ~kHeapMask) mPair.mFirst.heap.mpBegin,su (SSOLayout::SSO_CAPACITY - mPair.mFirst.sso.mRemainingSizeField.mnRemainingSize) SSOLayout::SSO_CAPACITY mPair.mFirst.sso.mData,su !!(mPair.mFirst.sso.mRemainingSizeField.mnRemainingSize & kSSOMask) ({first}, {second}) first second [{mStorage.mnSize}] {{}} [{mStorage.mnSize}] {{ {*mStorage.mpData} }} [{mStorage.mnSize}] {{ {*mStorage.mpData}, {*(mStorage.mpData+1)} }} [{mStorage.mnSize}] {{ {*mStorage.mpData}, {*(mStorage.mpData+1)}, {*(mStorage.mpData+2)} }} [{mStorage.mnSize}] {{ {*mStorage.mpData}, {*(mStorage.mpData+1)}, {*(mStorage.mpData+2)}, {*(mStorage.mpData+3)} }} [{mStorage.mnSize}] {{ {*mStorage.mpData}, {*(mStorage.mpData+1)}, {*(mStorage.mpData+2)}, {*(mStorage.mpData+3)}, {*(mStorage.mpData+4)} }} [{mStorage.mnSize}] {{ {*mStorage.mpData}, {*(mStorage.mpData+1)}, {*(mStorage.mpData+2)}, {*(mStorage.mpData+3)}, {*(mStorage.mpData+4)}, {*(mStorage.mpData+5)} }} [{mStorage.mnSize}] {{ {*mStorage.mpData}, {*(mStorage.mpData+1)}, {*(mStorage.mpData+2)}, {*(mStorage.mpData+3)}, {*(mStorage.mpData+4)}, {*(mStorage.mpData+5)}, ... }} DynamicSize mStorage.mnSize mStorage.mnSize mStorage.mpData [{$T2}] {{}} [{$T2}] {{ {*mStorage.mpData} }} [{$T2}] {{ {*mStorage.mpData}, {*(mStorage.mpData+1)} }} [{$T2}] {{ {*mStorage.mpData}, {*(mStorage.mpData+1)}, {*(mStorage.mpData+2)} }} [{$T2}] {{ {*mStorage.mpData}, {*(mStorage.mpData+1)}, {*(mStorage.mpData+2)}, {*(mStorage.mpData+3)} }} [{$T2}] {{ {*mStorage.mpData}, {*(mStorage.mpData+1)}, {*(mStorage.mpData+2)}, {*(mStorage.mpData+3)}, {*(mStorage.mpData+4)} }} [{$T2}] {{ {*mStorage.mpData}, {*(mStorage.mpData+1)}, {*(mStorage.mpData+2)}, {*(mStorage.mpData+3)}, {*(mStorage.mpData+4)}, {*(mStorage.mpData+5)} }} [{$T2}] {{ {*mStorage.mpData}, {*(mStorage.mpData+1)}, {*(mStorage.mpData+2)}, {*(mStorage.mpData+3)}, {*(mStorage.mpData+4)}, {*(mStorage.mpData+5)}, ... }} ConstantSize $T2 $T2 mStorage.mpData [{mpEnd - mpBegin}] {{}} [{mpEnd - mpBegin}] {{ {*mpBegin} }} [{mpEnd - mpBegin}] {{ {*mpBegin}, {*(mpBegin+1)} }} [{mpEnd - mpBegin}] {{ {*mpBegin}, {*(mpBegin+1)}, {*(mpBegin+2)} }} [{mpEnd - mpBegin}] {{ {*mpBegin}, {*(mpBegin+1)}, {*(mpBegin+2)}, {*(mpBegin+3)} }} [{mpEnd - mpBegin}] {{ {*mpBegin}, {*(mpBegin+1)}, {*(mpBegin+2)}, {*(mpBegin+3)}, {*(mpBegin+4)} }} [{mpEnd - mpBegin}] {{ {*mpBegin}, {*(mpBegin+1)}, {*(mpBegin+2)}, {*(mpBegin+3)}, {*(mpBegin+4)}, {*(mpBegin+5)} }} [{mpEnd - mpBegin}] {{ {*mpBegin}, {*(mpBegin+1)}, {*(mpBegin+2)}, {*(mpBegin+3)}, {*(mpBegin+4)}, {*(mpBegin+5)}, ... }} mpEnd - mpBegin mCapacityAllocator.mFirst - mpBegin mpEnd - mpBegin mpBegin [0] {{}} [1] {{ {*mItBegin.mpCurrent} }} [{(mItEnd.mpCurrentArrayPtr - mItBegin.mpCurrentArrayPtr) * $T3 + (mItEnd.mpCurrent-mItEnd.mpBegin) - (mItBegin.mpCurrent-mItBegin.mpBegin)}] {{ {*mItBegin.mpCurrent}, ... }} (mItEnd.mpCurrentArrayPtr - mItBegin.mpCurrentArrayPtr) * $T3 + (mItEnd.mpCurrent-mItEnd.mpBegin) - (mItBegin.mpCurrent-mItBegin.mpBegin) (mItEnd.mpCurrentArrayPtr - mItBegin.mpCurrentArrayPtr) * $T3 + (mItEnd.mpCurrent-mItEnd.mpBegin) - (mItBegin.mpCurrent-mItBegin.mpBegin) mItBegin.mpCurrentArrayPtr[(mItBegin.mpCurrent-mItBegin.mpBegin + $i) / $T3][(mItBegin.mpCurrent-mItBegin.mpBegin + $i) % $T3] {*mpCurrent} *mpCurrent *(*(mpCurrentArrayPtr-1) + (mpEnd-mpBegin) - 1) *(mpCurrent-1) **(mpCurrentArrayPtr+1) *(mpCurrent+1) mpCurrent == mpBegin mpCurrent+1 == mpEnd {c} c [0] {{}} [1] {{ {((eastl::ListNode<$T1>*)mNodeAllocator.mFirst.mpNext)->mValue} }} [2] {{ {((eastl::ListNode<$T1>*)mNodeAllocator.mFirst.mpNext)->mValue}, {((eastl::ListNode<$T1>*)mNodeAllocator.mFirst.mpNext->mpNext)->mValue} }} [?] {{ {((eastl::ListNode<$T1>*)mNodeAllocator.mFirst.mpNext)->mValue}, {((eastl::ListNode<$T1>*)mNodeAllocator.mFirst.mpNext->mpNext)->mValue}, ... }} Content of lists will repeat indefinitely. Keep that in mind! mNodeAllocator.mFirst.mpNext mpNext ((eastl::ListNode<$T1>*)this)->mValue {mValue} mValue *(eastl::ListNode<$T1>*)mpNext *(eastl::ListNode<$T1>*)mpPrev Content of lists will repeat indefinitely. Keep that in mind! The rest of the list follows: (eastl::ListNode<$T1>*)mpNext->mpNext (eastl::ListNode<$T1>*)mpNext mValue {*mpNode} *(eastl::ListNode<$T1>*)mpNode [0] {{}} [1] {{ {((eastl::SListNode<$T1>*)mNode.mpNext)->mValue} }} [2] {{ {((eastl::SListNode<$T1>*)mNode.mpNext)->mValue}, {((eastl::SListNode<$T1>*)mNode.mpNext->mpNext)->mValue} }} [?] {{ {((eastl::SListNode<$T1>*)mNode.mpNext)->mValue}, {((eastl::SListNode<$T1>*)mNode.mpNext->mpNext)->mValue}, ... }} mNode.mpNext mpNext ((eastl::SListNode<$T1>*)this)->mValue {mValue} mValue *(eastl::SListNode<$T1>*)mpNext The rest of the list follows: mpNext == nullptr ? nullptr : (eastl::SListNode<$T1>*)mpNext->mpNext (eastl::SListNode<$T1>*)mpNext mValue {*mpNode} *(eastl::SListNode<$T1>*)mpNode [0] {{}} [1] {{ {mAnchor.mpNext} }} [?] {{ {mAnchor.mpNext}, ... }} Content of intrusive lists will repeat indefinitely. Keep that in mind! mAnchor.mpNext mpNext *this [0] {{}} [1] {{ {mAnchor.mpNext} }} [?] {{ {mAnchor.mpNext}, ... }} Content of intrusive lists will repeat indefinitely. Keep that in mind! mAnchor.mpNext mpNext *(($T1*)this) {*($T1*)mpNode} *($T1*)mpNode [0] {{}} [1] {{ {((eastl::rbtree_node<$T1>*)mAnchor.mpNodeLeft)->mValue} }} [{mnSize}] {{ {((eastl::rbtree_node<$T1>*)mAnchor.mpNodeLeft)->mValue}, ... }} mnSize mnSize mAnchor.mpNodeParent mpNodeLeft mpNodeRight ((eastl::rbtree_node<$T1>*)this)->mValue [0] {{}} [1] {{ {((eastl::rbtree_node<$T2>*)mAnchor.mpNodeLeft)->mValue} }} [{mnSize}] {{ {((eastl::rbtree_node<$T2>*)mAnchor.mpNodeLeft)->mValue}, ... }} mnSize mnSize mAnchor.mpNodeParent mpNodeLeft mpNodeRight ((eastl::rbtree_node<$T2>*)this)->mValue {mValue} mValue It is possible to expand parents that do not exist. *(eastl::rbtree_node<$T1>*)mpNodeParent *(eastl::rbtree_node<$T1>*)mpNodeLeft *(eastl::rbtree_node<$T1>*)mpNodeRight {*(eastl::rbtree_node<$T1>*)mpNode} *(eastl::rbtree_node<$T1>*)mpNode [{mnElementCount}] {{}} [{mnElementCount}] {{ ... }} mnBucketCount mpBucketArray entry->mValue entry = entry->mpNext bucketIndex++ entry = mpBucketArray[bucketIndex] [{mnElementCount}] {{}} [{mnElementCount}] {{ ... }} entry->mValue.second entry = entry->mpNext bucketIndex++ entry = mpBucketArray[bucketIndex] {mValue}, {*mpNext} {mValue} this mpNext mValue {mpNode->mValue} mpNode->mValue {*(mIterator-1)} mIterator-1 {{count = {kSize}}} kSize kSize bBitValue = ((mWord[iWord] >> iBitInWord) % 2) != 0 ? true : false bBitValue iBitInWord++ iWord++ iBitInWord = 0 {c} c {mpBegin,[mnCount]} mpBegin,[mnCount] ({mFirst}, {mSecond}) ({mSecond}) ({mFirst}) (empty) (empty) ({mFirst}, {mSecond}) nullopt {value()} value() {mError} (Error) {mValue} mError mValue mHasValue void {mError} (Error) mError mHasValue {$T1} to {$T2}} {mRep} nanoseconds {mRep} microseconds {mRep} milliseconds {mRep} seconds {mRep} minutes {mRep} hours {mRep} duration with ratio = [{$T2} : {$T3}] empty {mInvokeFuncPtr} {*val} empty {m_storage.external_storage} {mAtomic} mAtomic {mFlag.mAtomic} [valueless_by_exception] {{ index=0, value={($T1*)mBuffer.mCharData}} {{ index=1, value={($T2*)mBuffer.mCharData}} {{ index=2, value={($T3*)mBuffer.mCharData}} {{ index=3, value={($T4*)mBuffer.mCharData}} {{ index=4, value={($T5*)mBuffer.mCharData}} {{ index=5, value={($T6*)mBuffer.mCharData}} {{ index=6, value={($T7*)mBuffer.mCharData}} {{ index=7, value={($T8*)mBuffer.mCharData}} {{ index=8, value={($T9*)mBuffer.mCharData}} {{ index=9, value={($T10*)mBuffer.mCharData}} {{ index=10, value={($T11*)mBuffer.mCharData}} {{ index=11, value={($T12*)mBuffer.mCharData}} {{ index=12, value={($T13*)mBuffer.mCharData}} {{ index=13, value={($T14*)mBuffer.mCharData}} {{ index=14, value={($T15*)mBuffer.mCharData}} {{ index=15, value={($T16*)mBuffer.mCharData}} {{ index=16, value={($T17*)mBuffer.mCharData}} {{ index=17, value={($T18*)mBuffer.mCharData}} {{ index=18, value={($T19*)mBuffer.mCharData}} {{ index=19, value={($T20*)mBuffer.mCharData}} {{ index=20, value={($T21*)mBuffer.mCharData}} {{ index=21, value={($T22*)mBuffer.mCharData}} {{ index=22, value={($T23*)mBuffer.mCharData}} {{ index=23, value={($T24*)mBuffer.mCharData}} {{ index=24, value={($T25*)mBuffer.mCharData}} {{ index=25, value={($T26*)mBuffer.mCharData}} {{ index=26, value={($T27*)mBuffer.mCharData}} {{ index=27, value={($T28*)mBuffer.mCharData}} {{ index=28, value={($T29*)mBuffer.mCharData}} {{ index=29, value={($T30*)mBuffer.mCharData}} {{ index=30, value={($T31*)mBuffer.mCharData}} index() ($T1*)mBuffer.mCharData ($T2*)mBuffer.mCharData ($T3*)mBuffer.mCharData ($T4*)mBuffer.mCharData ($T5*)mBuffer.mCharData ($T6*)mBuffer.mCharData ($T7*)mBuffer.mCharData ($T8*)mBuffer.mCharData ($T9*)mBuffer.mCharData ($T10*)mBuffer.mCharData ($T11*)mBuffer.mCharData ($T12*)mBuffer.mCharData ($T13*)mBuffer.mCharData ($T14*)mBuffer.mCharData ($T15*)mBuffer.mCharData ($T16*)mBuffer.mCharData ($T17*)mBuffer.mCharData ($T18*)mBuffer.mCharData ($T19*)mBuffer.mCharData ($T20*)mBuffer.mCharData ($T21*)mBuffer.mCharData ($T22*)mBuffer.mCharData ($T23*)mBuffer.mCharData ($T24*)mBuffer.mCharData ($T25*)mBuffer.mCharData ($T26*)mBuffer.mCharData ($T27*)mBuffer.mCharData ($T28*)mBuffer.mCharData ($T29*)mBuffer.mCharData ($T30*)mBuffer.mCharData ($T31*)mBuffer.mCharData ({*this,view(noparens)}) {(*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue} ({*this,view(noparens)}) (*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue {(*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<1,$T2,0>*)&mImpl)).mValue} ({*this,view(noparens)}) (*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue (*((eastl::Internal::TupleLeaf<1,$T2,0>*)&mImpl)).mValue {(*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<1,$T2,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<2,$T3,0>*)&mImpl)).mValue} ({*this,view(noparens)}) (*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue (*((eastl::Internal::TupleLeaf<1,$T2,0>*)&mImpl)).mValue (*((eastl::Internal::TupleLeaf<2,$T3,0>*)&mImpl)).mValue {(*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<1,$T2,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<2,$T3,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<3,$T4,0>*)&mImpl)).mValue} ({*this,view(noparens)}) (*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue (*((eastl::Internal::TupleLeaf<1,$T2,0>*)&mImpl)).mValue (*((eastl::Internal::TupleLeaf<2,$T3,0>*)&mImpl)).mValue (*((eastl::Internal::TupleLeaf<3,$T4,0>*)&mImpl)).mValue {(*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<1,$T2,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<2,$T3,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<3,$T4,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<4,$T5,0>*)&mImpl)).mValue} ({*this,view(noparens)}) (*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue (*((eastl::Internal::TupleLeaf<1,$T2,0>*)&mImpl)).mValue (*((eastl::Internal::TupleLeaf<2,$T3,0>*)&mImpl)).mValue (*((eastl::Internal::TupleLeaf<3,$T4,0>*)&mImpl)).mValue (*((eastl::Internal::TupleLeaf<4,$T5,0>*)&mImpl)).mValue {(*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<1,$T2,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<2,$T3,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<3,$T4,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<4,$T5,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<5,$T6,0>*)&mImpl)).mValue} ({*this,view(noparens)}) (*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue (*((eastl::Internal::TupleLeaf<1,$T2,0>*)&mImpl)).mValue (*((eastl::Internal::TupleLeaf<2,$T3,0>*)&mImpl)).mValue (*((eastl::Internal::TupleLeaf<3,$T4,0>*)&mImpl)).mValue (*((eastl::Internal::TupleLeaf<4,$T5,0>*)&mImpl)).mValue (*((eastl::Internal::TupleLeaf<5,$T6,0>*)&mImpl)).mValue {(*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<1,$T2,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<2,$T3,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<3,$T4,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<4,$T5,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<5,$T6,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<6,$T7,0>*)&mImpl)).mValue} ({*this,view(noparens)}) (*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue (*((eastl::Internal::TupleLeaf<1,$T2,0>*)&mImpl)).mValue (*((eastl::Internal::TupleLeaf<2,$T3,0>*)&mImpl)).mValue (*((eastl::Internal::TupleLeaf<3,$T4,0>*)&mImpl)).mValue (*((eastl::Internal::TupleLeaf<4,$T5,0>*)&mImpl)).mValue (*((eastl::Internal::TupleLeaf<5,$T6,0>*)&mImpl)).mValue (*((eastl::Internal::TupleLeaf<6,$T7,0>*)&mImpl)).mValue (nothing) {static_cast<flag_type>(m_mask),en} m_mask,bb (flag_type)(1 << 0),en (flag_type)(1 << 1),en (flag_type)(1 << 2),en (flag_type)(1 << 3),en (flag_type)(1 << 4),en (flag_type)(1 << 5),en (flag_type)(1 << 6),en (flag_type)(1 << 7),en (flag_type)(1 << 8),en (flag_type)(1 << 9),en (flag_type)(1 << 10),en (flag_type)(1 << 11),en (flag_type)(1 << 12),en (flag_type)(1 << 13),en (flag_type)(1 << 14),en (flag_type)(1 << 15),en (flag_type)(1 << 16),en (flag_type)(1 << 17),en (flag_type)(1 << 18),en (flag_type)(1 << 19),en (flag_type)(1 << 20),en (flag_type)(1 << 21),en (flag_type)(1 << 22),en (flag_type)(1 << 23),en (flag_type)(1 << 24),en (flag_type)(1 << 25),en (flag_type)(1 << 26),en (flag_type)(1 << 27),en (flag_type)(1 << 28),en (flag_type)(1 << 29),en (flag_type)(1 << 30),en (flag_type)(1 << 31),en {static_cast<flag_type>(__log2(m_mask)),en} (multiple values) (nothing) m_mask,bb (flag_type)(0),en (flag_type)(1),en (flag_type)(2),en (flag_type)(3),en (flag_type)(4),en (flag_type)(5),en (flag_type)(6),en (flag_type)(7),en (flag_type)(8),en (flag_type)(9),en (flag_type)(10),en (flag_type)(11),en (flag_type)(12),en (flag_type)(13),en (flag_type)(14),en (flag_type)(15),en (flag_type)(16),en (flag_type)(17),en (flag_type)(18),en (flag_type)(19),en (flag_type)(20),en (flag_type)(21),en (flag_type)(22),en (flag_type)(23),en (flag_type)(24),en (flag_type)(25),en (flag_type)(26),en (flag_type)(27),en (flag_type)(28),en (flag_type)(29),en (flag_type)(30),en (flag_type)(31),en