Boost C++ Libraryのお勉強その4
Boost.ConceptCheck
テンプレート引数として渡したものがコンパイル出来ないものの場合、分かりずらいコンパイルエラーとなるので、わかりやすくするための仕組み。どうしてもコンパイル出来ずに断念…。
Boost.Config
boost自体を構築するためのもの?マニュアルちょっと見たけどよく分からない。
Boost.Conversion
dynamic_castは失敗すると0を返すだけなので、その辺をちょっと細工したもの。しかし、bad_castじゃなくてassertか。
#include <boost/cast.hpp> class Alfa { public: virtual ~Alfa() {} }; class Bravo : public Alfa {}; class Charlie : public Alfa {}; void func(Alfa * a) { Bravo * b = boost::polymorphic_downcast < Bravo * > (a); } int main(void) { Charlie c; func(boost::polymorphic_cast < Alfa * > (&c)); return 0; }
conversion.elf: /usr/include/boost/cast.hpp:97: Target boost::polymorphic_downcast(Source*) [with Target = Bravo*, Source = Alfa]: Assertion `dynamic_cast(x) == x' failed. Aborted