Задать вопрос
Ответы пользователя по тегу C++
  • Как сделать const_iterator без дублирования кода?

    @Wiki-fan Автор вопроса
    Я только учусь
    В итоге написал что-то вроде этого:
    template<bool is_const_iterator>
    	class CMetaIterator : public std::iterator<std::random_access_iterator_tag, T> {
    
    	public:
    		typedef T value_type;
    		typedef typename std::conditional<is_const_iterator, const value_type&, value_type&>::type reference;
    		typedef typename std::conditional<is_const_iterator, const value_type*, value_type*>::type pointer;
    	...
    	reference operator*() const;
    	pointer operator->() const;
    	...
    };
    	typedef CMetaIterator<false> CIterator;
    	typedef CMetaIterator<true> CConstIterator;
    	typedef std::reverse_iterator<CIterator> CReverseIterator;
    	typedef std::reverse_iterator<CConstIterator> CReverseConstIterator;
    Ответ написан
    Комментировать