♻️🐛 Refactor qc::Permutation
and fix corner case in Qiskit layout import
#858
+192
−36
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.
Description
This PR refactors the
qc::Permutation
class to not subclass fromstd::map
. This has caused more harm than good, especially in the Python bindings, where pybind automatically binds some of thestd::map
members and then won't accept them being called on aPermutation
object.This creates quite a bit of boilerplate code for exposing the
map
interface in the permutation class, but has no other major influence (except that the Python bindings now work properly).Additionally, this fixes an error related to the layout import from Qiskit related to Qiskit/qiskit#12749. It turns out that calling the public API of the
TranspileLayout
may throw errors if thefinal_layout
isNone
.Last, but not least, this PR adds a warnings ignore filter for a nonsense GCC warning, which should make the build log warning free again.
Checklist: