повысить static_assert с сообщением? - PullRequest
3 голосов
/ 14 июля 2010

при повышении 1.43 кажется, что BOOST_STATIC_ASSERT просто позволяет выставить логическое значение, есть ли альтернатива, которая позволяет мне также отображать сообщение об ошибке компиляции?

Ответы [ 3 ]

5 голосов
/ 14 июля 2010

MPL имеет BOOST_MPL_ASSERT_MSG. Например. используя GCC 4.2. с этим:

BOOST_MPL_ASSERT_MSG(false, THIS_DOESNT_WORK, (void));

... приводит к:

/path/to/file.cpp:42: error: no matching function for call to 
'assertion_failed(mpl_::failed************ (function()::THIS_DOESNT_WORK::************)())'
3 голосов
/ 14 июля 2010

Вы пробовали что-то вроде:

BOOST_STATIC_ASSERT(sizeof(long) == 64 && "Must have 64-bit long!")

Если ваш компилятор поддерживает C ++ 0x static_assert, вы можете сделать:

static_assert(sizeof(long) == 64, "Must have 64-bit long!")
0 голосов
/ 28 апреля 2016

Поддержка 1.47 и более поздних версий BOOST_STATIC_ASSERT_MSG. Использование:

#include <boost/static_assert.hpp>
BOOST_STATIC_ASSERT_MSG(condition, msg)

Если доступен C ++ 11 или компилятор поддерживает static_assert(), сообщение об ошибке будет msg string. Иначе макрос рассматривается как BOOST_STATIC_ASSERT(condition)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...