fix container_range_traits overloads

This commit is contained in:
bolero-MURAKAMI 2014-07-12 19:04:34 +09:00
parent 909ccfe73a
commit c995ffd177
2 changed files with 16 additions and 2 deletions

View file

@ -348,6 +348,12 @@ namespace sprout {
, public sprout::detail::container_range_traits_range_at_impl<Container>
, public sprout::detail::container_range_traits_range_at_const_impl<Container>
{
using sprout::detail::container_range_traits_range_front_impl<Container>::range_front;
using sprout::detail::container_range_traits_range_front_const_impl<Container>::range_front;
using sprout::detail::container_range_traits_range_back_impl<Container>::range_back;
using sprout::detail::container_range_traits_range_back_const_impl<Container>::range_back;
using sprout::detail::container_range_traits_range_at_impl<Container>::range_at;
using sprout::detail::container_range_traits_range_at_const_impl<Container>::range_at;
public:
// iterators:
static SPROUT_CONSTEXPR typename sprout::container_traits<Container>::iterator

View file

@ -33,11 +33,19 @@ namespace sprout {
typedef iterator const_iterator;
typedef typename std::iterator_traits<Iterator>::value_type value_type;
typedef typename std::iterator_traits<Iterator>::reference reference;
typedef typename std::remove_reference<reference>::type const& const_reference;
typedef typename std::conditional<
std::is_reference<reference>::value,
typename std::remove_reference<reference>::type const&,
reference
>::type const_reference;
typedef typename std::iterator_traits<Iterator>::difference_type difference_type;
typedef typename std::make_unsigned<difference_type>::type size_type;
typedef typename std::iterator_traits<Iterator>::pointer pointer;
typedef typename std::remove_pointer<pointer>::type const* const_pointer;
typedef typename std::conditional<
std::is_pointer<pointer>::value,
typename std::remove_pointer<pointer>::type const*,
pointer
>::type const_pointer;
private:
iterator first_;
iterator last_;