SmallVector: Move emplace_back to SmallVectorImpl.
[oota-llvm.git] / include / llvm / ADT / iterator_range.h
index 6735700e046855dbbe5706b901dc345d8b46d7d7..523a86f02e083d3cdbfc31a96f2052bf40672145 100644 (file)
@@ -32,7 +32,6 @@ class iterator_range {
   IteratorT begin_iterator, end_iterator;
 
 public:
-  iterator_range() {}
   iterator_range(IteratorT begin_iterator, IteratorT end_iterator)
       : begin_iterator(std::move(begin_iterator)),
         end_iterator(std::move(end_iterator)) {}
@@ -45,8 +44,12 @@ public:
 ///
 /// This provides a bit of syntactic sugar to make using sub-ranges
 /// in for loops a bit easier. Analogous to std::make_pair().
-template<class T> iterator_range<T> make_range(const T &x, const T &y) {
-  return (iterator_range<T>(x, y));
+template <class T> iterator_range<T> make_range(T x, T y) {
+  return iterator_range<T>(std::move(x), std::move(y));
+}
+
+template <typename T> iterator_range<T> make_range(std::pair<T, T> p) {
+  return iterator_range<T>(std::move(p.first), std::move(p.second));
 }
 }