14 #ifndef OR_TOOLS_MATH_OPT_STORAGE_ITERATORS_H_
15 #define OR_TOOLS_MATH_OPT_STORAGE_ITERATORS_H_
41 template <
typename UpdateData,
typename V, V UpdateData::*Field,
52 : base_iter_(std::move(base_iter)) {}
70 return lhs.base_iter_ == rhs.base_iter_;
74 return lhs.base_iter_ != rhs.base_iter_;
90 template <
typename V,
typename C>
92 template <
typename V,
typename C>
103 template <auto Po
interToMember,
typename BaseIter>
108 BaseIter>(std::move(base_iter));
120 template <auto Po
interToMember,
typename UpdateTrackers>
123 MakeUpdateDataFieldIterator<PointerToMember>(trackers.begin()),
124 MakeUpdateDataFieldIterator<PointerToMember>(trackers.end()));
typename BaseIter::difference_type difference_type
std::forward_iterator_tag iterator_category
UpdateDataFieldIterator(BaseIter base_iter)
friend bool operator==(const UpdateDataFieldIterator &lhs, const UpdateDataFieldIterator &rhs)
reference operator*() const
UpdateDataFieldIterator operator++(int)
friend bool operator!=(const UpdateDataFieldIterator &lhs, const UpdateDataFieldIterator &rhs)
UpdateDataFieldIterator & operator++()
pointer operator->() const
C MemberPointerClassType(V C::*)
auto MakeUpdateDataFieldIterator(BaseIter base_iter)
iterator_range< T > make_range(T x, T y)
V MemberPointerValueType(V C::*)
auto MakeUpdateDataFieldRange(const UpdateTrackers &trackers)