BOOST_STATIC_ASSERT_MSG - 缺少错误消息

时间:2013-06-18 08:34:02

标签: c++ gcc boost mingw

我在向BOOST_STATIC_ASSERT_MSG发出有意义的错误消息时遇到问题。我把它归结为:

#include <boost/static_assert.hpp>

namespace StaticChecks
{
    BOOST_STATIC_ASSERT_MSG( false, "Where is my error message?" );
}

无处可见指定的错误消息。相反,我得到以下内容:

c:\tryit> x86_64-w64-mingw32-g++ -O0 -g -m64 -Wall -IC:\boost_1_50_0 -IC:\MinGW-W64\msys\include compiletimechecks.cpp -c -o compiletimechecks.cpp.o
compiletimechecks.cpp:5:5: error: invalid application of 'sizeof' to incomplete type 'boost::STATIC_ASSERTION_FAILURE<false>'
compiletimechecks.cpp:5:5: error: template argument 1 is invalid
compiletimechecks.cpp:5:63: error: invalid type in declaration before ';' token

我在Windows 7上使用GCC / C ++ 64位:

c:\tryit> x86_64-w64-mingw32-g++ --version
x86_64-w64-mingw32-g++ (Built by MinGW-builds project) 4.7.2

我在Linux(Ubuntu 12.04 LTS 64位)上使用gcc版本4.6.3和Boost版本1.48得到了相同的错误。

另外,我应该补充说,当断言成功时,它会按预期工作。

1 个答案:

答案 0 :(得分:3)

来自BOOST_STATIC_ASSERT_MSG上的文档:

  

如果C ++ 0x static_assert功能不可用,BOOST_STATIC_ASSERT_MSG(x, msg)将被视为BOOST_STATIC_ASSERT(x)

您显然在没有-std=c++0x的情况下进行构建,因此static_assert不可用,因此不会显示该消息。