#include "TestMFHasTypeCheckTypedef.hpp" #include int main() { // 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; }