« BCB::子フォームを全て一気に閉じる | トップページ | std::copy »

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

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

|

« BCB::子フォームを全て一気に閉じる | トップページ | std::copy »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« BCB::子フォームを全て一気に閉じる | トップページ | std::copy »