У меня есть такой код:
#include <vector>
struct pollfd; // incomplete struct, since i did not included <poll>
struct Status{
// abstract representation of pollfd, epoll_event, kevent
int fd;
int status; // my own status representation
};
class iterator{
public:
hidden_pointer_iterator(const pollfd *pos) : pos(pos){}
bool operator !=(iterator const &other) const{
return ! ( *this == other);
}
bool operator ==(iterator const &other) const;
iterator &operator ++();
Status operator *() const;
private:
const pollfd *pos;
};
class PollSelector{
public:
// ...
iterator begin() const; // pull pointer to fds_.data()
iterator end() const; // pull pointer to fds_.data() + fds_.size()
private:
std::vector<pollfd> fds_;
};
Я смог запустить его, реализовав все конкретные операции в файле CPP.
Мой вопрос - есть ли еще "Стандартный «способ сделать этот итератор?»
Обновление
Мой код компилируется и работает.
Мне очень жаль, если в std есть что-то, что может делать все это автоматически, без большого количества кодирования.