mirror of
https://github.com/bolero-MURAKAMI/Sprout.git
synced 2024-12-23 21:25:49 +00:00
support const_iterator_cast: reverse_iterator
This commit is contained in:
parent
cd72873c3a
commit
a43b9f3faa
1 changed files with 22 additions and 0 deletions
|
@ -14,7 +14,9 @@
|
|||
#include <sprout/iterator/next.hpp>
|
||||
#include <sprout/iterator/prev.hpp>
|
||||
#include <sprout/iterator/distance.hpp>
|
||||
#include <sprout/iterator/const_iterator_cast.hpp>
|
||||
#include <sprout/utility/swap.hpp>
|
||||
#include <sprout/type_traits/enabler_if.hpp>
|
||||
|
||||
namespace sprout {
|
||||
//
|
||||
|
@ -200,6 +202,26 @@ namespace sprout {
|
|||
iterator_prev(sprout::reverse_iterator<Iterator> const& it) {
|
||||
return it.prev();
|
||||
}
|
||||
|
||||
//
|
||||
// is_const_iterator_cast_convertible
|
||||
//
|
||||
template<typename FromIterator, typename ToIterator>
|
||||
struct is_const_iterator_cast_convertible<sprout::reverse_iterator<FromIterator>, sprout::reverse_iterator<ToIterator> >
|
||||
: public sprout::is_const_iterator_cast_convertible<FromIterator, ToIterator>
|
||||
{};
|
||||
//
|
||||
// const_iterator_conversion
|
||||
//
|
||||
template<
|
||||
typename T,
|
||||
typename Iterator,
|
||||
typename sprout::enabler_if<sprout::is_const_iterator_cast_convertible<sprout::reverse_iterator<Iterator>, T>::value>::type = sprout::enabler
|
||||
>
|
||||
inline SPROUT_CONSTEXPR T
|
||||
const_iterator_conversion(sprout::reverse_iterator<Iterator> const& it) {
|
||||
return T(sprout::const_iterator_cast<typename T::iterator_type>(it.base()));
|
||||
}
|
||||
} // namespace sprout
|
||||
|
||||
#endif // #ifndef SPROUT_ITERATOR_REVERSE_ITERATOR_HPP
|
||||
|
|
Loading…
Reference in a new issue