Removed several warnings when compiling with GCC 10.2 #8
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.
stxxl::priority_queue uses std::memmove internally, which is only defined behavior for trivially copyable types.
std::pair and std::tuple are not trivially copyable, even if all the stored types are trivially copyable, so storing
them in a stxxl::priority_queue is technically undefined behavior. While this should still work as expected in all "sane"
compilers, it is still against the standard and GCC 10.2 throws a warning. This commit fixes the only occurence of this warning
in the "core" libraries stxxl and stxxl_tools. Note that there are many more occurences of this issues in the examples
(e.g. in the skew3 algorithm) which remain unchanged by this commit.
stxxl::vector::const_vector_iterator had a user-defined copy-constructor but the automatically generated copy-assignment-operator.
This throws a warning in GCC 10.2 (Typically, either both can be defaulted, or both have to be manually defined). The const_vector_iterator
is a trivial type, so defaulting both operations works here and leads to a cleaner interface.