Столкнулся со следующей задачей.
Есть библиотека, в которой имеется некоторая иерархия классов. В конструкторах этих классов осуществляется проверка передаваемых им параметров и в случае ошибки кидается исключение. Таким образом какая-то общая часть проверок производится в базовых классах, а дополнительные проверки параметров конструктора - в субклассах.
К данной библиотеке написана привязка для python, через которую, собственно, пользователи и работают.
Функции библиотеки очень активно оперируют объектами описанных выше классов (создают/уничтожают). Поэтому в Release-сборке программы все проверки должны отключаться, оставаясь лишь там, где пользователь явно может вызвать конструктор класса, то есть при вызове конструктора класса из python. В Debug-сборке проверки должны присутствовать везде.
Как можно было бы это реализовать без излишнего дублирования кода и чтобы изменения затрагивали меньший объём кода?