Silicium
Classes | Namespaces | Functions
iterator_range.hpp File Reference
#include <silicium/config.hpp>
#include <silicium/is_handle.hpp>
#include <boost/static_assert.hpp>
#include <boost/range/begin.hpp>
#include <boost/range/end.hpp>
#include <boost/utility/addressof.hpp>
#include <cassert>

Go to the source code of this file.

Classes

struct  Si::detail::actual_value_type< Iterator >
 
struct  Si::iterator_range< Iterator >
 

Namespaces

 Si
 
 Si::detail
 

Functions

template<class Iterator1 , class Iterator2 >
BOOST_CONSTEXPR bool Si::pointing_to_same_subrange (iterator_range< Iterator1 > const &left, iterator_range< Iterator2 > const &right)
 
template<class Iterator >
BOOST_CONSTEXPR Iterator const & Si::begin (iterator_range< Iterator > const &range)
 
template<class Iterator >
BOOST_CONSTEXPR Iterator const & Si::range_begin (iterator_range< Iterator > const &range)
 
template<class Iterator >
BOOST_CONSTEXPR Iterator const & Si::end (iterator_range< Iterator > const &range)
 
template<class Iterator1 , class Iterator2 >
BOOST_CONSTEXPR auto Si::make_iterator_range (Iterator1 &&begin, Iterator2 &&end) -> iterator_range< typename std::decay< Iterator1 >::type >
 
template<class Range >
auto Si::make_iterator_range (Range &&range) -> decltype(make_iterator_range(std::begin(range), std::end(range)))
 
template<class ContiguousRange >
auto Si::make_contiguous_range (ContiguousRange &&range) -> decltype(make_iterator_range(boost::addressof(*std::begin(range)), boost::addressof(*std::end(range))))