Looking at the type_erasure example:

typedef any<boost::mpl::vector<copy_constructible<>,
        typeid_<>, addable<>>
> any_type;

any_type x(1.1);
any_type y(1);
any_type z(x + y);

Apparently, without placeholders for x and y, this is undefined behavior. Am I interpreting it right? If so, shouldn't it fail to compile or at least throw an exception at runtime?

Thanks,

Alex