Как мне проверить, что статическое утверждение действительно утверждает «ложь»?

0

Предположим, у меня есть пользовательская реализация static assert (потому что мне нужно настроить таргетинг на компилятор, у которого нет встроенного static_assert). Я хочу создать тест, который проверяет, что

MY_STATIC_ASSERT(false);

действительно утверждает. Если я просто напишу такой код - он не будет компилироваться (и поэтому не запускаться). Я бы предпочел, чтобы какой-то фрагмент кода компилировался нормально, когда код выше не работает и не скомпилируется, когда код выше компилируется.

Это возможно? Могу ли я установить время компиляции (или, по крайней мере, время выполнения), что мой статический аргумент действительно утверждает "ложь"?

  • 0
    ааа, старый вопрос - кто тестирует тестеров!
Теги:
unit-testing
static-assert

1 ответ

1

Конечно, у вас может быть проверка "времени компиляции" - если вы полностью компилируете что-то другое:

// test_my_static_assert.cpp

#include "my_static_assert.h"

int main() {
    MY_STATIC_ASSERT(false);
}

// compile.sh
if g++ test_my_static_assert.cpp; then
    echo "MY_STATIC_ASSERT failed! Compile succeeded!"
fi

Или что-то. Но это должно быть в отдельной программе полностью.

  • 0
    Я думаю, что это может быть «шагом сборки» в Visual Studio или аналогом в другой системе сборки.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню