template <class Iterator>
class reverse_iterator: public ft::iterator<typename ft::iterator_traits<Iterator>::iterator_category,
typename ft::iterator_traits<Iterator>::value_type,
typename ft::iterator_traits<Iterator>::difference_type,
typename ft::iterator_traits<Iterator>::pointer,
typename ft::iterator_traits<Iterator>::reference>
{
public:
//Member_types
typedef Iterator iterator_type;
typedef typename iterator_traits<Iterator>::iterator_category iterator_category;
typedef typename iterator_traits<Iterator>::value_type value_type;
typedef typename iterator_traits<Iterator>::difference_type difference_type;
typedef typename iterator_traits<Iterator>::pointer pointer;
typedef typename iterator_traits<Iterator>::reference reference;
};
protected:
iterator_type current_state;
구현해야하는 함수들
참고 소스코드 gcc
https://github.com/gcc-mirror/gcc/blob/54c1bf7801758caf2ff54917e79a8c239643061c/libstdc%2B%2B-v3/include/bits/stl_iterator.h
line 85 ~
explicit keyword
원하지 않은 형변환이 일어나지 않도록 제한하는 키워드이다.
https://dydtjr1128.github.io/cpp/2019/07/13/Cpp-explicit-keyowrd.html