diff --git a/include/boost/concept_archetype.hpp b/include/boost/concept_archetype.hpp index f21c817..e020dd7 100644 --- a/include/boost/concept_archetype.hpp +++ b/include/boost/concept_archetype.hpp @@ -408,7 +408,7 @@ namespace boost { //=========================================================================== // Iterator Archetype Classes - template + template > 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::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::get(); } self& operator++() { return *this; } self operator++(int) { return *this; } };