-
Notifications
You must be signed in to change notification settings - Fork 69
Closed
Description
In the following code bidirectional_traversal_tag does not work with std::prev. Iterator does not recognized as bidirirectional.
#include <iostream>
#include <boost/iterator/iterator_facade.hpp>
class node_iterator
: public boost::iterator_facade
<
node_iterator
, std::pair<int, int>
, boost::bidirectional_traversal_tag
, std::pair<int, int>
>
{
public:
node_iterator()
: m_i(0) {}
explicit node_iterator(int i)
: m_i(i) {}
private:
friend class boost::iterator_core_access;
void increment() { m_i++; }
void decrement() { m_i--; }
bool equal(node_iterator const& other) const
{
return this->m_i == other.m_i;
}
std::pair<int, int> dereference() const { return { m_i, m_i}; }
public:
int m_i;
};
int main()
{
auto i1 = node_iterator(1);
auto i10 = node_iterator(10);
std::next(i1);
std::prev(i1);
std::cout <<"aaa";
}
MikeGitb
Metadata
Metadata
Assignees
Labels
No labels