in Microsoft.O365.Security.Native.ETW/Property.hpp [77:105]
virtual bool MoveNext() = IEnumerator<Property^>::MoveNext {
// C#'s enumerators expect the enumeration to point to a vacuous
// space *before* the first element when they are Reset. Reset is
// immediately followed by a call to MoveNext that points us to the
// actual first element. C++ iterators don't work this way, so we
// need to align them by lazily initializing the underlying C++
// iterator.
if (!vecIterator_) {
vecIterator_.Swap(NativePtr<std::vector<krabs::property>::iterator>(iterator_->begin()));
if (iters_match(vecIterator_, vecIteratorEnd_)) {
return false;
}
return true;
}
if (iters_match(vecIterator_, vecIteratorEnd_)) {
return false;
}
std::advance(*vecIterator_.Get(), 1);
if (iters_match(vecIterator_, vecIteratorEnd_)) {
return false;
}
return true;
}