All tuple values are passed directly to hash_combine. This is inspired by the implementation used for Swift:
https://github.com/llvm/llvm-project-staging/commit/4a1b4edbe1d1969284c1528e2950ac81b25edc8f
https://github.com/llvm/llvm-project-staging/commit/845f3829b91522920a59c351b9011af01c5c7f87
Could you move it right next to the implementation of hash_value for std::pair above?