| Name |
Last commit
|
Last Update |
|---|---|---|
| .. | ||
| attr.h | ||
| cast.h | ||
| chrono.h | ||
| common.h | ||
| complex.h | ||
| descr.h | ||
| eigen.h | ||
| eval.h | ||
| functional.h | ||
| numpy.h | ||
| operators.h | ||
| options.h | ||
| pybind11.h | ||
| pytypes.h | ||
| stl.h | ||
| stl_bind.h | ||
| typeid.h |
noexcept deduction, added in PR #555, doesn't work with clang's -std=c++1z; and while it works with g++, it isn't entirely clear to me that it is required to work in C++17. What should work, however, is that C++17 allows implicit conversion of a `noexcept(true)` function pointer to a `noexcept(false)` (i.e. default, noexcept-not-specified) function pointer. That was breaking in pybind11 because the cpp_function template used for lambdas provided a better match (i.e. without requiring an implicit conversion), but it then failed. This commit takes a different approach of using SFINAE on the lambda function to prevent it from matching a non-lambda object, which then gets implicit conversion from a `noexcept` function pointer to a `noexcept(false)` function pointer. This much nicer solution also gets rid of the C++17 NOEXCEPT macros, and works in both clang and g++.
| Name |
Last commit
|
Last Update |
|---|---|---|
| .. | ||
| attr.h | Loading commit data... | |
| cast.h | Loading commit data... | |
| chrono.h | Loading commit data... | |
| common.h | Loading commit data... | |
| complex.h | Loading commit data... | |
| descr.h | Loading commit data... | |
| eigen.h | Loading commit data... | |
| eval.h | Loading commit data... | |
| functional.h | Loading commit data... | |
| numpy.h | Loading commit data... | |
| operators.h | Loading commit data... | |
| options.h | Loading commit data... | |
| pybind11.h | Loading commit data... | |
| pytypes.h | Loading commit data... | |
| stl.h | Loading commit data... | |
| stl_bind.h | Loading commit data... | |
| typeid.h | Loading commit data... |