Я пишу блок unit-test для библиотеки исходного кода, содержащей static_assert
s.
Я хочу обеспечить уверенность, что эти static_assert
не делают больше и не меньше, чем они
желательно в соответствии с условиями проектирования. Поэтому я хотел бы проверить их.
Я мог бы, конечно, добавить несовместимые модульные тесты интерфейса, которые вызывают static assert
s
быть нарушенными самыми разнообразными средствами, и комментировать, или #if 0
их всех, с моими личными
для пользователя, что если кто-либо из них не комментируется, то они будут наблюдать
что библиотека не компилируется.
Но это было бы довольно смешно. Вместо этого я хотел бы
некоторые устройства, которые в контексте набора единиц измерения заменят
a static_assert
с условно спровоцированным исключением во время выполнения, что
тестовая структура может ловить и сообщать об этом: этот код имел бы static_assert
ed
в реальной сборке.
Я не замечаю какую-то вопиющую причину, почему это была бы глупая идея?
Если нет, как это можно сделать? Макро-аппарат - это очевидный подход, и я не Измените это. Но, возможно, также, и предпочтительно, с помощью шаблонной специализации или Подход SFINAE?