change to input_iterator_archetype to add a type parameter for the

base class of the reference type. Needed this, for example, to get
the concept covering test for std::count right.


[SVN r30287]
This commit is contained in:
Jeremy Siek
2005-07-28 15:39:59 +00:00
parent 166e3207b7
commit ce3fb4f640

View File

@ -408,7 +408,7 @@ namespace boost {
//===========================================================================
// Iterator Archetype Classes
template <class T, int I = 0>
template <class T, int I = 0, class RefBase = null_archetype<> >
class input_iterator_archetype
{
private:
@ -416,7 +416,8 @@ namespace boost {
public:
typedef std::input_iterator_tag iterator_category;
typedef T value_type;
struct reference {
struct reference : public RefBase {
reference(detail::dummy_constructor d) : RefBase(d) { }
operator const value_type&() const { return static_object<T>::get(); }
};
typedef const T* pointer;
@ -424,7 +425,7 @@ namespace boost {
self& operator=(const self&) { return *this; }
bool operator==(const self&) const { return true; }
bool operator!=(const self&) const { return true; }
reference operator*() const { return reference(); }
const reference& operator*() const { return static_object<reference>::get(); }
self& operator++() { return *this; }
self operator++(int) { return *this; }
};