К сожалению, нет простого способа проверить ошибку компиляции так, как вы хотите, я также хотел сделать это раньше.
В любом случае, если ваши тесты достаточно малы, вы можете написать короткий некомпилируемый код, такой как ваш пример, и проверить с помощью скрипта, верны ли сгенерированные ошибки или нет (опять же, вы только что сказали это).
Примером такого рода вещей могут быть сценарии настройки Unix, в более чем нескольких сценариях, которые я видел, они пытаются скомпилировать небольшие примеры для проверки версии / возможностей компилятора, чтобы правильно настроить make-файл.
Так что, по крайней мере, вы можете знать, что вы не одиноки. Теперь, если вы написали успешный тестовый фреймворк для такого рода вещей, вы, вероятно, станете знаменитым:)
Редактировать: Возможно, вы также можете использовать #define, который либо пытается, либо не компилирует некомпилируемый код, например,
#ifdef _COMPILETEST
#define TRY_COMPILE(...) (__VA_ARG__)
#else
#define TRY_COMPILE(...)
#end
Обратите внимание, что это то, о чем я только что подумал, и, вероятно, есть много проблем с этим шаблоном, но он может послужить началом для некоторых лучших идей.