summaryrefslogtreecommitdiff
path: root/libartbase/base/iteration_range.h
diff options
context:
space:
mode:
Diffstat (limited to 'libartbase/base/iteration_range.h')
-rw-r--r--libartbase/base/iteration_range.h9
1 files changed, 6 insertions, 3 deletions
diff --git a/libartbase/base/iteration_range.h b/libartbase/base/iteration_range.h
index eaed8b06a8..c916250751 100644
--- a/libartbase/base/iteration_range.h
+++ b/libartbase/base/iteration_range.h
@@ -18,6 +18,7 @@
#define ART_LIBARTBASE_BASE_ITERATION_RANGE_H_
#include <iterator>
+#include <type_traits>
namespace art {
@@ -49,9 +50,11 @@ inline IterationRange<Iter> MakeIterationRange(const Iter& begin_it, const Iter&
return IterationRange<Iter>(begin_it, end_it);
}
-template<typename List>
-inline IterationRange<typename List::iterator> MakeIterationRange(List& list) {
- return IterationRange<typename List::iterator>(list.begin(), list.end());
+template <typename List>
+inline auto MakeIterationRange(List& list) -> IterationRange<decltype(list.begin())> {
+ static_assert(std::is_same_v<decltype(list.begin()), decltype(list.end())>,
+ "Different iterator types");
+ return MakeIterationRange(list.begin(), list.end());
}
template <typename Iter>