diff options
Diffstat (limited to 'libartbase/base/iteration_range.h')
-rw-r--r-- | libartbase/base/iteration_range.h | 9 |
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> |