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