Step-75: use well-formed deleter #13747
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.
LLVM/Clang's libc++ library version 13/14 got stricter by checking
requirements of the deleter, in particular, according to [1] a deleter
must pass the requirement
__shared_ptr_deleter_ctor_reqs
which isdefined as follows:
Unfortunately, our construct
does not pass this test. The issue is that the deleter takes a pointer,
not a reference which, so the lambda
[](auto &){}
does not pass above__shared_ptr_deleter_ctor_reqs
.While at it, remove the const cast:
coarse_grid_triangulations
isdeclared as a vector holding a
shared_ptr<const Triangulation<dim>>
,thus we should simply take the address and not convert to a non-const
object.
Fixes
https://cdash.dealii.43-1.org/viewBuildError.php?buildid=1614
https://cdash.dealii.43-1.org/viewBuildError.php?buildid=1613
[1] https://github.com/llvm/llvm-project/blob/main/libcxx/include/__memory/shared_ptr.h
Closes #13613