[C++11] Add an iterator_range class template. This is modeled on the
authorChandler Carruth <chandlerc@gmail.com>
Mon, 3 Mar 2014 10:28:38 +0000 (10:28 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Mon, 3 Mar 2014 10:28:38 +0000 (10:28 +0000)
commit26abef7b5a3f239204a1ad605a88b99a1ef878c3
tree6c1bb152ddeff77e88b9e00639132ee77d9ac2b2
parent0b949e0e9f01a7fafc96d1cd81113a44045d40ae
[C++11] Add an iterator_range class template. This is modeled on the
proposed std::iterator_pair which was in committee suggested to move
toward std::iterator_range. There isn't a formal paper yet, but there
seems little disagreement within the committee at this point so it seems
fine to provide our own version in the llvm namespace so we can easily
build range adaptors for the numerous iterators in LLVM's interfaces.

Note that I'm not really comfortable advocating a crazed range-based
migration just yet. The range stuff is still in a great deal of flux in
C++ and the committee hasn't entirely made up its mind (afaict) about
how it will work. So I'm mostly trying to provide the minimal
functionality needed to make writing easy and convenient range adaptors
for range based for loops easy and convenient. ;]

Subsequent patches will use this across the fundamental IR types, where
there are iterator views.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@202686 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/ADT/iterator_range.h [new file with mode: 0644]