35 using FT = std::conditional_t<CNST, const FaceType, FaceType>;
37 using VT = std::conditional_t<
39 const typename FT::VertexType,
40 typename FT::VertexType>;
42 FT* mCurrent =
nullptr;
49 using iterator_category = std::forward_iterator_tag;
50 using value_type = FT*;
51 using reference = FT*&;
57 mCurrent(&f), mEnd(&f), mV0(f.vertex(edge)),
58 mV1(f.vertexMod(edge + 1))
64 return mCurrent ==
oi.mCurrent && mV0 ==
oi.mV0 && mV1 ==
oi.mV1;
69 return !(*
this ==
oi);
75 uint edge = mCurrent->indexOfEdge(mV0, mV1);
77 mCurrent = mCurrent->adjFace(edge);
78 if (mCurrent == mEnd || mCurrent ==
nullptr) {
93 reference operator*()
const {
return mCurrent; }
95 pointer operator->()
const {
return &mCurrent; }