template <typename _Trait, typename _ValueType>
struct __iterator_option_traits__Is_GetValueRef_Stack
{
- typedef _ValueType& ValueType;
- typedef const _ValueType& CValueType;
+ typedef const _ValueType& CValueTypeRef;
+ typedef const _ValueType* CValueTypePtr;
+ typedef _ValueType& ValueTypeRef;
+ typedef _ValueType* ValueTypePtr;
};
template <typename _ValueType>
struct __iterator_option_traits__Is_GetValueRef_Stack
<_trait_true, _ValueType>
{
- typedef _ValueType ValueType;
- typedef const _ValueType CValueType;
+ typedef const _ValueType CValueTypeRef;
+ typedef _ValueType ValueTypeRef;
+ typedef const void CValueTypePtr;
+ typedef void ValueTypePtr;
+ //typedef const _ValueType* CValueTypePtr;
+ //typedef _ValueType* ValueTypePtr;
};
////////////////////////////////////////////////////////////
typedef _IteratorImpl _Base,_Impl,Impl;
public:
typedef typename _IteratorImpl::ValueType _ValueType,ValueType;
-
+
typedef typename
__iterator_option_traits__Is_GetValueRef_Stack<
typename _OptionTraits::_Is_GetValueRef_Stack,
- _ValueType>::ValueType _ValueTypeRef,ValueTypeRef;
-
+ _ValueType>::CValueTypeRef _CValueTypeRef,CValueTypeRef;
+
+ typedef typename
+ __iterator_option_traits__Is_GetValueRef_Stack<
+ typename _OptionTraits::_Is_GetValueRef_Stack,
+ _ValueType>::CValueTypePtr _CValueTypePtr,CValueTypePtr;
+
typedef typename
__iterator_option_traits__Is_GetValueRef_Stack<
typename _OptionTraits::_Is_GetValueRef_Stack,
- _ValueType>::CValueType _CValueTypeRef,CValueTypeRef;
+ _ValueType>::ValueTypeRef _ValueTypeRef,ValueTypeRef;
+
+ typedef typename
+ __iterator_option_traits__Is_GetValueRef_Stack<
+ typename _OptionTraits::_Is_GetValueRef_Stack,
+ _ValueType>::ValueTypePtr _ValueTypePtr,ValueTypePtr;
//typedef typename _IteratorImpl::IndexType _IndexType,IndexType;
//typedef typename _IteratorImpl::ListType _ListType,ListType;
//////////////////////////////////////////
// Value
- operator const ValueType() const { return get_value_ref(); }
+ operator const ValueType() const { return get_value_ref(); }
CValueTypeRef operator *() const { return get_value_ref(); }
- CValueTypeRef operator ->() const { return get_value_ref(); }
- ValueType get_value() const { return get_value_ref(); }
- const ValueType* get_value_ptr() const { return &(get_value_ref()); }
+ CValueTypePtr operator ->() const { return &get_value_ref(); }
+ CValueTypePtr get_value_ptr() const { return &get_value_ref(); }
+ ValueType get_value() const { return get_value_ref(); }
ValueTypeRef operator *() { return get_value_ref(); }
- ValueTypeRef operator ->() { return get_value_ref(); }
- ValueType* get_value_ptr() { return &(get_value_ref()); }
+ ValueTypePtr operator ->() { return &get_value_ref(); }
+ ValueTypePtr get_value_ptr() { return &get_value_ref(); }
_iterator operator =(const _iterator& from){
_IteratorImpl::operator =(from);