Hello,
the following code does not compile with the last line in main(). The error message is
main.cpp: In function 'int main()':
main.cpp:37:8: error: 'boost::detail::operator_brackets_result<It, S, S&>::type' has no member named 'i'
it[3].i = 0;
^
What could be the problem?
#include <boost/iterator/iterator_facade.hpp>
struct S
{
int i;
float f;
};
class It :
public boost::iterator_facade<It, S, boost::random_access_traversal_tag>
{
private:
friend class boost::iterator_core_access;
static S s;
reference dereference() const
{ return s; }
bool equal(It const&) const
{ return true; }
void increment() {}
void decrement() {}
void advance(difference_type n) {}
difference_type distance_to(It const&) const
{ return 0; }
};
int main()
{
It it;
(*(it + 3)).i = 0;
S& s = it[3];
s.i = 0;
it[3].i = 0;
}