#include "TestMFHasTypeCheckTypedef.hpp" #include int main() { using namespace boost::mpl::placeholders; // You can always instantiate without compiler errors tti::mf_has_type < tti::TheInteger<_,_>, tti::member_type_BType, boost::mpl::identity > aVar; tti::mf_has_type < tti::has_type_NoOtherType<_,_>, boost::mpl::identity, boost::mpl::identity > aVar2; // Compile time asserts BOOST_MPL_ASSERT((tti::mf_has_type < tti::has_type_AnIntType<_,_>, boost::mpl::identity, boost::mpl::identity > )); BOOST_MPL_ASSERT((tti::mf_has_type < tti::NameStruct<_,_>, boost::mpl::identity, tti::member_type_AStructType > )); BOOST_MPL_ASSERT((tti::mf_has_type < tti::has_type_AnIntTypeReference<_,_>, boost::mpl::identity, boost::mpl::identity > )); BOOST_MPL_ASSERT((tti::mf_has_type < tti::has_type_BType<_,_>, boost::mpl::identity, tti::member_type_BType > )); BOOST_MPL_ASSERT((tti::mf_has_type < tti::TheInteger<_,_>, tti::member_type_BType, boost::mpl::identity > )); BOOST_MPL_ASSERT((tti::mf_has_type < tti::has_type_CType<_,_>, tti::member_type_BType, tti::mf_member_type < tti::member_type_CType<_>, tti::member_type_BType > > )); BOOST_MPL_ASSERT((tti::mf_has_type < tti::has_type_AnotherIntegerType<_,_>, tti::mf_member_type < tti::member_type_CType<_>, tti::member_type_BType >, boost::mpl::identity > )); BOOST_MPL_ASSERT((tti::mf_has_type < tti::SomethingElse<_,_>, boost::mpl::identity, tti::member_type_AnIntType > )); return 0; }