AFEPack
DerefIterator.h
浏览该文件的文档。
00001 
00011 #ifndef __DerefIterator_h__
00012 #define __DerefIterator_h__
00013 
00014 template <class IT, class VT>
00015   struct _Deref_iterator : public IT {
00016   typedef _Deref_iterator<IT,VT> _Self;
00017   typedef IT _Base;
00018 
00019   typedef VT value_type;
00020   typedef value_type* pointer;
00021   typedef value_type& reference;
00022 
00023   _Deref_iterator() : _Base() {}
00024   _Deref_iterator(const _Base& __x) : _Base(__x) {}
00025   _Deref_iterator(const _Self& __x) : _Base(__x) {}
00026 
00027   template <class OIT>
00028     _Self& operator=(const OIT& __x) {
00029     _Base::operator=(__x);
00030     return *this;
00031   }
00032   
00033   reference deref() const { return dynamic_cast<reference>(*(_Base::operator*())); }
00034 
00035   reference operator*() const { return deref(); }
00036   pointer operator->() const { return &deref(); }
00037 };
00038 
00039 #endif // __DerefIterator_h__
00040