
AMDG Simonson, Lucanus J wrote:
Steven Watanabe wrote:
What about using a function object for testing for the sentinal and using EBO to optimize it away if it is stateless?
Is your suggestion the same as the code I just posted?
It's a different syntax but the effect is the same
If not could you post what you had in mind and explain what you mean about EBO for those of us who aren't up to speed on that issue?
template<class T, class Sentinel> class sentinel_iterator { public: sentinel_iterator(T* ptr, Sentinel s = Sentinel()); sentinel_iterator& operator++() { ++data.first(); if(data.second()(*data.first())) data.first() = 0; } //... private: boost::compressed_pair<T*, Sentinel> data; };
By the way, can you spot anything wrong with the code I posted. The fact that it passes Beman's unit tests gives me some confidence, but I'm not completely convinced that it can really be so simple.
It looks okay to me... In Christ, Steven Watanabe