« 2004年11月 | トップページ | 2005年1月 »

2004年12月20日 (月)

BoostとVC6

VC6では最新(1.32.0)のSplitはコンパイルすらされない。
そこでSpritが使える最後のバージョンである1.30.2を使おうとすると、今度は

C:\Program Files\boost-1.30.2\boost/random/exponential_distribution.hpp(43)
C:\Program Files\boost-1.30.2\boost/random/normal_distribution.hpp(49)
C:\Program Files\boost-1.30.2\boost/random/uniform_01.hpp(44)

の3箇所の行にある
BOOST_STATIC_ASSERT(!std::numeric_limits<RealType>::is_integer);<br>


error C2027: 認識できない型 'STATIC_ASSERTION_FAILURE' が使われています。

というエラーが起こる。
http://boost.cppll.jp/HEAD/more/int_const_guidelines.htmの「numeric_limits に気をつけなさい」の項にあるようにこれはVC6&boostのバグのようだ。

これを回避するには

#ifdef BOOST_MSVC
	BOOST_STATIC_CONSTANT(bool, check = !std::numeric_limits::is_integer);
	BOOST_STATIC_ASSERT(check);
#else
	BOOST_STATIC_ASSERT(!std::numeric_limits::is_integer);
#endif

に前述の行を置き換える。

| | コメント (0)

« 2004年11月 | トップページ | 2005年1月 »