Spicy
iterator.h
1 // Copyright (c) 2020-2021 by the Zeek Project. See LICENSE for details.
2 
3 #pragma once
4 
5 #include <iterator>
6 
7 #include <hilti/rt/exception.h>
8 
9 namespace hilti::rt {
10 
11 namespace iterator::detail {
12 
14 template<typename T>
15 class Range {
16 public:
17  Range(const T& t) : _t(t) {}
18 
19  Range(const Range&) = delete;
20  Range(Range&&) = delete;
21  Range& operator=(const Range&) = delete;
22  Range& operator=(Range&&) = delete;
23 
24  auto begin() const { return std::begin(_t); }
25  auto end() const { return std::end(_t); }
26 
27 private:
28  const T& _t;
29 };
30 
31 } // namespace iterator::detail
36 template<typename T>
37 auto range(const T& t) {
38  return iterator::detail::Range(t);
39 }
40 } // namespace hilti::rt
Definition: any.h:7
Definition: iterator.h:15
auto range(const T &t)
Definition: iterator.h:37