template class mrpt::poses::CPose3DQuat::iterator_impl
Overview
Unified iterator implementation using template parameterization for const-correctness.
This eliminates code duplication between iterator and const_iterator.
#include <mrpt/poses/CPose3DQuat.h> template <bool IsConst> class iterator_impl { public: // typedefs typedef std::ptrdiff_t difference_type; typedef double value_type; typedef std::conditional_t<IsConst, const double*, double*> pointer; typedef std::conditional_t<IsConst, const double&, double&> reference; typedef std::random_access_iterator_tag iterator_category; // construction iterator_impl(); iterator_impl( PoseType& obj, difference_type start_idx ); template <bool WasConst, typename = std::enable_if_t<IsConst&& !WasConst>> iterator_impl(const iterator_impl<WasConst>& other); // methods reference operator * () const; reference operator [] (difference_type off) const; iterator_impl& operator ++ (); iterator_impl operator ++ (int); iterator_impl& operator -- (); iterator_impl operator -- (int); iterator_impl& operator += (difference_type off); iterator_impl operator + (difference_type off) const; iterator_impl& operator -= (difference_type off); iterator_impl operator - (difference_type off) const; difference_type operator - (const iterator_impl& it) const; bool operator == (const iterator_impl& it) const; bool operator != (const iterator_impl& it) const; bool operator < (const iterator_impl& it) const; bool operator > (const iterator_impl& it) const; bool operator <= (const iterator_impl& it) const; bool operator >= (const iterator_impl& it) const; };