9#include "libcopp/utils/config/libcopp_build_features.h"
11LIBCOPP_COPP_NAMESPACE_BEGIN
14template <
class ContainerType,
bool IsConst = false>
17 using iterator_type =
typename std::conditional<IsConst,
typename ContainerType::const_iterator,
18 typename ContainerType::iterator>::type;
20 using reference =
typename std::iterator_traits<iterator_type>::reference;
21 using pointer =
typename std::iterator_traits<iterator_type>::pointer;
22 using value_type =
typename std::iterator_traits<iterator_type>::value_type;
43 if (owner_ != &owner) {
47 return iter_ != owner.end();
62LIBCOPP_COPP_NAMESPACE_END
typename std::conditional< IsConst, typename ContainerType::const_iterator, typename ContainerType::iterator >::type iterator_type
LIBCOPP_UTIL_FORCEINLINE void reset(const ContainerType &owner) LIBCOPP_MACRO_NOEXCEPT
typename std::iterator_traits< iterator_type >::pointer pointer
typename std::iterator_traits< iterator_type >::value_type value_type
const ContainerType * owner_
LIBCOPP_UTIL_FORCEINLINE pointer operator->() const LIBCOPP_MACRO_NOEXCEPT
LIBCOPP_UTIL_FORCEINLINE void set(const ContainerType &owner, iterator_type v) LIBCOPP_MACRO_NOEXCEPT
LIBCOPP_UTIL_FORCEINLINE iterator_guard() LIBCOPP_MACRO_NOEXCEPT
LIBCOPP_UTIL_FORCEINLINE bool valid(const ContainerType &owner) const LIBCOPP_MACRO_NOEXCEPT
LIBCOPP_UTIL_FORCEINLINE reference operator*() const LIBCOPP_MACRO_NOEXCEPT
LIBCOPP_UTIL_FORCEINLINE iterator_type release(const ContainerType &owner)
typename std::iterator_traits< iterator_type >::reference reference
#define LIBCOPP_UTIL_FORCEINLINE