At first look this may look like an aestetic change.
But I encoundered a case i which the if (!(test)) plumed_error() << PLMD::Exception::Assertion(#test), the plumed_dbg_massert macro expansion with NDEBUG, is not optimized away, and this patch I think is the least invasive thing to do:
if constexpr(false) is guaranteed to be evaluated at compile time, so that the rest of the line is ignored.
I think helps in improving the code optimization after inlining a function, at least that is what I think it happened in my case
Target release
I would like my code to appear in release 2.10/2.9 (this is a single commit, it can be easily rebased on the 2.9)
Type of contribution
[ ] changes to code or doc authored by PLUMED developers, or additions of code in the core or within the default modules
[ ] changes to a module not authored by you
[ ] new module contribution or edit of a module authored by you
Copyright
[x] I agree to transfer the copyright of the code I have written to the PLUMED developers or to the author of the code I am modifying.
[ ] the module I added or modified contains a COPYRIGHT file with the correct license information. Code should be released under an open source license. I also used the command cd src && ./header.sh mymodulename in order to make sure the headers of the module are correct.
Tests
[ ] I added a new regtest or modified an existing regtest to validate my changes.
[ ] I verified that all regtests are passed successfully on GitHub Actions.
Description
At first look this may look like an aestetic change. But I encoundered a case i which the
if (!(test)) plumed_error() << PLMD::Exception::Assertion(#test)
, the plumed_dbg_massert macro expansion with NDEBUG, is not optimized away, and this patch I think is the least invasive thing to do:if constexpr(false)
is guaranteed to be evaluated at compile time, so that the rest of the line is ignored.I think helps in improving the code optimization after inlining a function, at least that is what I think it happened in my case
Target release
I would like my code to appear in release 2.10/2.9 (this is a single commit, it can be easily rebased on the 2.9)
Type of contribution
Copyright
COPYRIGHT
file with the correct license information. Code should be released under an open source license. I also used the commandcd src && ./header.sh mymodulename
in order to make sure the headers of the module are correct.Tests