[ADT] drop_begin: use adl_begin/adl_end. NFC.
authorMichael Kruse <llvm@meinersbur.de>
Wed, 27 Jun 2018 19:39:03 +0000 (19:39 +0000)
committerMichael Kruse <llvm@meinersbur.de>
Wed, 27 Jun 2018 19:39:03 +0000 (19:39 +0000)
commit2cb2199948683280e1c00cf9f08401699782311b
tree11b98d8c92c06f7fb32e73d2c4df34d5f9d126e0
parent5dc371a7a613f1cb1b92a2dba15d3de70895fcf9
[ADT] drop_begin: use adl_begin/adl_end. NFC.

Summary:
The instantiation of the drop_begin function template usually fails because the functions begin() and end() do not exist. Only when using on a container from the std namespace (or `llvm::iterator_range`s of something derived from `std::iterator`), they are matched to std::begin() and std::end() due to Koenig-lookup.

Explicitly use llvm::adl_begin and llvm::adl_end to make drop_begin applicable to anything iterable (including C-style arrays).

A solution for general `llvm::iterator_range`s was already tried in r244620, but got reverted in r244621 due to MSVC not liking it.

Reviewers: dblaikie, grosbach, aaron.ballman, ruiu

Reviewed By: dblaikie, aaron.ballman

Subscribers: aaron.ballman, llvm-commits

Differential Revision: https://reviews.llvm.org/D48598

llvm-svn: 335772
llvm/include/llvm/ADT/iterator_range.h
llvm/unittests/ADT/IteratorTest.cpp