This patch adds the ability to deconstruct the value_type returned by llvm::enumarate into index and value of the wrapping range. Main use case is the common occurence of using it during loop iteration. After this patch it'd then be possible to write code such as:
for (auto [index, value] : enumerate(container)) { ... }
where index is the current index and value a reference to elements in the given container.
The order of index first, before value was mainly chosen to stay consistent with the current documentation of llvm::enumerate, but I'd personally be open to (and would have a slight preference of) swapping the order of the two as well.
nit: I think it's more common to have this just after using namespace llvm;