Если я чувствую, что мне нужно сделать такое предположение, я добавлю «утверждение времени компиляции» в код. Таким образом, компилятор сообщит мне, если и когда я ошибаюсь.
Если у вас есть или вы хотите использовать Boost, есть макрос BOOST_STATIC_ASSERT
, который делает это.
Для моих собственных целей я собрал свою собственную (которая работает на C или C ++ с MSVC, GCC и встроенным компилятором или двумя), в которой используются методы, аналогичные описанным в этой статье:
Реальные трюки для того, чтобы заставить утверждение времени компиляции работать корректно, связаны с тем, что некоторым компиляторам не нравятся объявления, смешанные с кодом (MSVC в режиме C), и что методы часто генерируют предупреждения, которые вы предпочитаете не засорять иначе работающую сборку. Придумывание методов, позволяющих избежать предупреждений, иногда является сложной задачей.