[C++] Fix the compiler errors reported by GCC 7 #3885
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Abstract:
This PR fixes the compiler errors in
src/FlatHashSet.h
andsrc/FlatHashMap.h
introduced in the previous PR #3694.Details:
The existing type definition of
FlatHashSet/Map
is problematic ifKey
is not natively hashable (i.e. No specialization ofstd::hash<Key>
available, sostd::unordered_set<Key>
cannot be specialized and therefore the member typehasher
does not exist), resulting in errors when the runtime library is being compiled by GCC 7 or Clang with GCC installation path set to GCC 7. You may find the error message produced by the Conan CI pipeline at here: conan-io/conan-center-index#12902 (comment).Since the runtime library now targets C++17 which is supported by GCC 7, it would be great to fix this incompatibility. (To be honest, I was somewhat surprised by GCC 8+ that do not treat this as an error...)
Thank you.