Replace inserter() with inserts to work-around C++20 strict requirement/bug in libstdc++10 #12
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.
We pull in the mlir package for the gimlet-api python package. We compile this with manylinux 2.31 to be compatible with more environments. However we also compile with C++20 because we need to support new language features.
manylinux uses libstdc++10 which has early, but buggy/restrictive support for C++20, especially around iterator concepts like std::inserter. Namely the std::inserter expects that iterators are default constructible, which is not the case for SmallPtrSetIterator. Explored trying to work-around this, but template substitution was an impassible barrier for this problem.
So to get around this, we're fixing the one usage that caused problems by switching away from an iterator implementation.
Signed-off-by: Phillip Kuznetsov philkuz@gimletlabs.ai