<BOOST_STATIC_ASSERT>работает следующим образом. Существует класс<STATIC_ASSERTION_FAILURE>, который определяется как:
namespace boost{
template <bool> struct STATIC_ASSERTION_FAILURE;
template <> struct STATIC_ASSERTION_FAILURE<true>{};
}
Ключевой особенностью является то, что сообщение об ошибке, вызванное неопределенным выражением<sizeof(STATIC_ASSERTION_FAILURE<0>)>, имеет тенденцию быть последовательным в широком спектре компиляторов. Остальная часть механизма<BOOST_STATIC_ASSERT>является просто способом подачи выражения<sizeof>в<typedef>. Использование макроса здесь несколько уродливо; однако участники стимулятора потратили значительные усилия, пытаясь изобрести статическое утверждение, которое избегало макросов, и все безрезультатно. Общий вывод заключался в том, что благо статического утверждения, работающего в пространстве имен, функций и классов, перевешивало уродство макроса.