-
Jan Trávníček authoredJan Trávníček authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
iterator.hpp 935 B
/*
* iterator.hpp
*
* Created on: Apr 1, 2013
* Author: Jan Travnicek
*/
#ifndef __ITERATOR_HPP_
#define __ITERATOR_HPP_
namespace std {
template<class T>
class reverser {
T& m_Container;
public:
reverser(T& container) : m_Container ( container ) {
}
std::reverse_iterator<typename std::conditional<std::is_const<T>::value,typename T::const_iterator,typename T::iterator>::type> begin() const {
return m_Container.rbegin();
}
std::reverse_iterator<typename std::conditional<std::is_const<T>::value,typename T::const_iterator,typename T::iterator>::type> end() const {
return m_Container.rend();
}
};
template<class T>
reverser<T> make_reverse(T& container) {
return reverser<T>(container);
}
template < typename T >
struct is_iterator : std::false_type {};
template < typename T >
struct is_iterator<typename std::iterator_traits<T>> : std::true_type {};
} /* namespace std */
#endif /* __ITERATOR_HPP_ */