int main() { #if BOOST_PP_VARIADICS BOOST_TEST(BOOST_TTI_HAS_TEMPLATE_GEN(ATPMemberTemplate)<AType>::value); BOOST_TEST(BOOST_TTI_HAS_TEMPLATE_GEN(AMemberTemplate)<AType>::value); BOOST_TEST(BOOST_TTI_HAS_TEMPLATE_GEN(SomeMemberTemplate)<AnotherType>::value); BOOST_TEST(BOOST_TTI_HAS_TEMPLATE_GEN(SimpleTMP)<AnotherType>::value); BOOST_TEST(!BOOST_TTI_HAS_TEMPLATE_GEN(TemplateNotExist)<AnotherType>::value); BOOST_TEST(HaveCL<AType>::value); BOOST_TEST(HaveAnotherMT<AType>::value); BOOST_TEST(ATemplateWithParms<AnotherType>::value); // Passing non-class enclosing type will return false BOOST_TEST(!BOOST_TTI_HAS_TEMPLATE_GEN(AMemberTemplate)<AType *>::value); BOOST_TEST(!ATemplateWithParms<double>::value); #endif // BOOST_PP_VARIADICS return boost::report_errors(); }
int main() { #if !defined(BOOST_TTI_VERSION_1_5) BOOST_TEST(BOOST_TTI_HAS_TEMPLATE_GEN(ATPMemberTemplate)<AType>::value); BOOST_TEST(BOOST_TTI_HAS_TEMPLATE_GEN(AMemberTemplate)<AType>::value); BOOST_TEST(BOOST_TTI_HAS_TEMPLATE_GEN(SomeMemberTemplate)<AnotherType>::value); BOOST_TEST(BOOST_TTI_HAS_TEMPLATE_GEN(SimpleTMP)<AnotherType>::value); BOOST_TEST(!BOOST_TTI_HAS_TEMPLATE_GEN(TemplateNotExist)<AnotherType>::value); #else // BOOST_TTI_VERSION_1_5 BOOST_TEST(BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS_GEN(ATPMemberTemplate)<AType>::value); BOOST_TEST(BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS_GEN(AMemberTemplate)<AType>::value); BOOST_TEST(BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS_GEN(SomeMemberTemplate)<AnotherType>::value); BOOST_TEST(BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS_GEN(SimpleTMP)<AnotherType>::value); BOOST_TEST(!BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS_GEN(TemplateNotExist)<AnotherType>::value); #endif // !BOOST_TTI_VERSION_1_5 BOOST_TEST(HaveCL<AType>::value); BOOST_TEST(HaveAnotherMT<AType>::value); BOOST_TEST(ATemplateWithParms<AnotherType>::value); return boost::report_errors(); }
int main() { BOOST_TEST(BOOST_TTI_HAS_TEMPLATE_GEN(ATPMemberTemplate)<AType>::value); BOOST_TEST(HaveCL<AType>::value); BOOST_TEST(!BOOST_TTI_HAS_TEMPLATE_GEN(AMemberTemplate)<AType>::value); BOOST_TEST(!HaveAnotherMT<AType>::value); BOOST_TEST(!BOOST_TTI_HAS_TEMPLATE_GEN(SomeMemberTemplate)<AnotherType>::value); BOOST_TEST(!ATemplateWithParms<AnotherType>::value); BOOST_TEST(BOOST_TTI_HAS_TEMPLATE_GEN(SimpleTMP)<AnotherType>::value); return boost::report_errors(); }
int main() { #if BOOST_PP_VARIADICS // You can always instantiate without compiler errors BOOST_TTI_HAS_TEMPLATE_GEN(TemplateNotExist)<AnotherType> aVar1; // Compile time asserts BOOST_MPL_ASSERT((BOOST_TTI_HAS_TEMPLATE_GEN(ATPMemberTemplate)<AType>)); BOOST_MPL_ASSERT((BOOST_TTI_HAS_TEMPLATE_GEN(AMemberTemplate)<AType>)); BOOST_MPL_ASSERT((BOOST_TTI_HAS_TEMPLATE_GEN(SomeMemberTemplate)<AnotherType>)); BOOST_MPL_ASSERT((BOOST_TTI_HAS_TEMPLATE_GEN(SimpleTMP)<AnotherType>)); BOOST_MPL_ASSERT((HaveCL<AType>)); BOOST_MPL_ASSERT((HaveAnotherMT<AType>)); BOOST_MPL_ASSERT((ATemplateWithParms<AnotherType>)); #endif // BOOST_PP_VARIADICS return 0; }
int main() { // You can always instantiate without compiler errors BOOST_TTI_HAS_TEMPLATE_GEN(AMemberTemplate)<AnotherType> aVar; HaveAnotherMT<AnotherType> aVar2; BOOST_TTI_HAS_TEMPLATE_GEN(SomeMemberTemplate)<AType> aVar3; BOOST_TTI_HAS_TEMPLATE_GEN(TemplateNotExist)<AType> aVar4; // Compile time asserts BOOST_MPL_ASSERT((BOOST_TTI_HAS_TEMPLATE_GEN(ATPMemberTemplate)<AType>)); BOOST_MPL_ASSERT((HaveCL<AType>)); BOOST_MPL_ASSERT((BOOST_TTI_HAS_TEMPLATE_GEN(SimpleTMP)<AnotherType>)); return 0; }
int main() { BOOST_TEST(BOOST_TTI_HAS_TEMPLATE_GEN(ATPMemberTemplate)<AType>::value); BOOST_TEST(HaveCL<AType>::value); BOOST_TEST(!BOOST_TTI_HAS_TEMPLATE_GEN(AMemberTemplate)<AType>::value); BOOST_TEST(!HaveAnotherMT<AType>::value); BOOST_TEST(!BOOST_TTI_HAS_TEMPLATE_GEN(SomeMemberTemplate)<AnotherType>::value); BOOST_TEST(!ATemplateWithParms<AnotherType>::value); BOOST_TEST(BOOST_TTI_HAS_TEMPLATE_GEN(SimpleTMP)<AnotherType>::value); // Passing non-class enclosing type will return false BOOST_TEST(!HaveCL<AType **>::value); BOOST_TEST(!BOOST_TTI_HAS_TEMPLATE_GEN(SimpleTMP)<char>::value); return boost::report_errors(); }
int main() { #if BOOST_PP_VARIADICS BOOST_TEST(BOOST_TTI_HAS_TEMPLATE_GEN(ATPMemberTemplate)<AType>::value); BOOST_TEST(BOOST_TTI_HAS_TEMPLATE_GEN(AMemberTemplate)<AType>::value); BOOST_TEST(BOOST_TTI_HAS_TEMPLATE_GEN(SomeMemberTemplate)<AnotherType>::value); BOOST_TEST(BOOST_TTI_HAS_TEMPLATE_GEN(SimpleTMP)<AnotherType>::value); BOOST_TEST(!BOOST_TTI_HAS_TEMPLATE_GEN(TemplateNotExist)<AnotherType>::value); BOOST_TEST(HaveCL<AType>::value); BOOST_TEST(HaveAnotherMT<AType>::value); BOOST_TEST(ATemplateWithParms<AnotherType>::value); #endif // BOOST_PP_VARIADICS return boost::report_errors(); }