Как написать работоспособные тесты static_assert?

Я пишу набор модульных тестов для библиотеки исходного кода, который содержитstatic_asserts. Я хочу обеспечить заверение этихstatic_assertС точки зрения дизайна, делайте не больше и не меньше, чем они хотят. Поэтому я хотел бы иметь возможность проверить их.

Я мог бы, конечно, добавить некомпилируемые модульные тесты интерфейса, которые вызываютstatic assertбыть нарушенным с помощью разнообразных средств, и комментарий или#if 0 все они, с моей личной уверенностью в том, что если кто-то из них не прокомментирован, они будут наблюдать, что библиотека не компилируется.

Но это было бы довольно смешно. Вместо этого я хотел бы иметь какой-то аппарат, который в контексте набора модульных тестов заменитstatic_assert с эквивалентно спровоцированным исключением времени выполнения, что тестовая среда может перехватить и сообщить о действии: этот код будет иметьstatic_assertЭд в реальной сборке.

Я пропускаю какую-то явную причину, почему это было бы глупой идеей?

Если нет, как это можно сделать? Макро-аппарат - очевидный подход, и я не исключаю этого. Но может быть также, и предпочтительно, со специализацией шаблона или подходом SFINAE?

Ответы на вопрос(1)

Ваш ответ на вопрос