Skip to content

Instantly share code, notes, and snippets.

@thynson
Created September 28, 2013 14:44
Show Gist options
  • Save thynson/6742784 to your computer and use it in GitHub Desktop.
Save thynson/6742784 to your computer and use it in GitHub Desktop.
// C++11 sugar for use of ranged-based for over iterator
// e.g.
// for (auto &x : range(begin, end)) { ... }
//
constexpr struct
{
template<typename ForwardIterator>
class range_helper
{
public:
range_helper(ForwardIterator begin, ForwardIterator end)
: m_begin(std::move(begin))
, m_end(std::move(end))
{}
ForwardIterator begin()
{ return m_begin; }
ForwardIterator end()
{ return m_end; }
private:
ForwardIterator m_begin, m_end;
};
template<typename ForwardIterator>
range_helper<ForwardIterator>
operator () (ForwardIterator begin, ForwardIterator end)
{
return range_helper<ForwardIterator>(begin, end);
}
} range;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment