C/C++ позволяют выполнить проверки константных выражений ещё на этапе компиляции программы. Это дешёвый способ избежать проблем при модификации кода в будущем.
Я рассмотрю работу с:
- перечислениями (enum),
- массивами (их синхронизацию с enum),
- switch-конструкциями,
- а так же работу с классами, содержащими разнородные данные.
BOOST_STATIC_ASSERT и все-все-все
Существуют много способов сломать компилятор во время компиляции. Из них мне больше всего нравится такое исполнение:
#define ASSERT(cond) typedef int foo[(cond) ? 1 : -1]
Но если у вас вЧитать полностью »