Fix pybind11 interoperability with Clang trunk #1269
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.
pybind11 fails to compile on the latest Clang. There are two issues:
#include <experimental/optional>
now fails with a preprocessor error stating that#include <optional>
should be used instead. The solution is to never includeexperimental/optional
ifoptional
is available.There are places in the pybind11 codebase that (indirectly) call
make_tuple()
without any arguments, e.g. thestr_attr
accessor. This causes am obscure compiler failure (excerpt below).The underlying problem is that
std::array<...>::operator[]
can no longer be instantiated for arrays with zero elements. The solution is to provide amake_tuple()
overload that takes no arguments.