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