4

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

gcc バージョン 4.6.3 と Boost バージョン 1.48 を使用している Linux (Ubuntu 12.04 LTS 64 ビット) でも同じエラーが発生します。

また、アサーションが成功すると、期待どおりに動作することを付け加えておきます。

4

1 に答える 1

3

ドキュメントからBOOST_STATIC_ASSERT_MSG

C++0x の static_assert 機能が利用できない場合、BOOST_STATIC_ASSERT_MSG(x, msg)として扱われBOOST_STATIC_ASSERT(x)ます。

どうやら なし-std=c++0xでビルドしているため、static_assertは利用できず、メッセージは表示されません。

于 2013-06-18T08:54:19.407 に答える