diff --git a/llvm/include/llvm/ADT/DenseMapInfo.h b/llvm/include/llvm/ADT/DenseMapInfo.h index b91a908d992f8..57a8674e35015 100644 --- a/llvm/include/llvm/ADT/DenseMapInfo.h +++ b/llvm/include/llvm/ADT/DenseMapInfo.h @@ -194,20 +194,16 @@ template struct DenseMapInfo> { return getHashValueImpl<0>(values); } - template - static bool isEqualImpl(const Tuple &lhs, const Tuple &rhs) { - if constexpr (I == sizeof...(Ts)) { - return true; - } else { - using EltType = std::tuple_element_t; - return DenseMapInfo::isEqual(std::get(lhs), - std::get(rhs)) && - isEqualImpl(lhs, rhs); - } + template + static bool isEqualImpl(const Tuple &lhs, const Tuple &rhs, + std::index_sequence) { + return (DenseMapInfo>::isEqual( + std::get(lhs), std::get(rhs)) && + ...); } static bool isEqual(const Tuple &lhs, const Tuple &rhs) { - return isEqualImpl<0>(lhs, rhs); + return isEqualImpl(lhs, rhs, std::index_sequence_for{}); } };