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.
According to the C++ Core Guideline C.35 [1], "A base class destructor should be either public and virtual, or protected and non-virtual".
Matter has a ton of virtual interfaces but objects are very rarely destroyed polymorphically. Hence, the virtual d-tors play no role but bloating the firmware.
Turn some virtual d-tors into non-virtual protected.
[1] https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rc-dtor-virtual
Testing
This is work in progress. I created this PR to see the reception of this proposal and assess the gain.
So far, I see over 0.5kB flash reduction on nRF lock-app by changing just a few d-tors, so I think it can give us a few K and the effort is pretty mechanical.