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_ranges 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_ranges was already tried in r244620, but got reverted in r244621 due to MSVC not liking it.