int main()
  {
  
  // You can always instantiate without compiler errors
  
  BOOST_TTI_HAS_TYPE_GEN(AnIntType)<AnotherType> aVar1;
  BOOST_TTI_HAS_TYPE_GEN(NoOtherType)<AType> aVar2;
  
  // Compile time asserts
  
  BOOST_MPL_ASSERT((BOOST_TTI_HAS_TYPE_GEN(AnIntType)<AType>));
  BOOST_MPL_ASSERT((BOOST_TTI_HAS_TYPE_GEN(AnIntTypeReference)<AType>));
  BOOST_MPL_ASSERT((NameStruct<AType>));
  BOOST_MPL_ASSERT((BOOST_TTI_HAS_TYPE_GEN(BType)<AType>));
  BOOST_MPL_ASSERT((TheInteger<AType::BType>));
  BOOST_MPL_ASSERT((BOOST_TTI_HAS_TYPE_GEN(CType)<AType::BType>));
  BOOST_MPL_ASSERT((BOOST_TTI_HAS_TYPE_GEN(AnotherIntegerType)<AType::BType::CType>));
  BOOST_MPL_ASSERT((SomethingElse<AnotherType>));
  
  return 0;

  }
int main()
  {
  
  BOOST_TEST(BOOST_TTI_HAS_TYPE_GEN(AnIntType)<AType>::value);
  BOOST_TEST(BOOST_TTI_HAS_TYPE_GEN(AnIntTypeReference)<AType>::value);
  BOOST_TEST(NameStruct<AType>::value);
  BOOST_TEST(BOOST_TTI_HAS_TYPE_GEN(BType)<AType>::value);
  BOOST_TEST(TheInteger<AType::BType>::value);
  BOOST_TEST(BOOST_TTI_HAS_TYPE_GEN(CType)<AType::BType>::value);
  BOOST_TEST(BOOST_TTI_HAS_TYPE_GEN(AnotherIntegerType)<AType::BType::CType>::value);
  BOOST_TEST(SomethingElse<AnotherType>::value);
  BOOST_TEST(!BOOST_TTI_HAS_TYPE_GEN(NoOtherType)<AnotherType>::value);
  
  return boost::report_errors();

  }
示例#3
0
//  (C) Copyright Edward Diener 2011
//  Use, modification and distribution are subject to the Boost Software License,
//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
//  http://www.boost.org/LICENSE_1_0.txt).

#include "test_has_type_ct.hpp"
#include <boost/detail/lightweight_test.hpp>

int main()
  {
  
  BOOST_TEST((BOOST_TTI_HAS_TYPE_GEN(AnIntType)<AType,int>::value));
  BOOST_TEST((NameStruct<AType,AType::AStructType>::value));
  BOOST_TEST((BOOST_TTI_HAS_TYPE_GEN(AnIntTypeReference)<AType,int &>::value));
  BOOST_TEST((BOOST_TTI_HAS_TYPE_GEN(BType)<AType,AType::BType>::value));
  BOOST_TEST((TheInteger<AType::BType,int>::value));
  BOOST_TEST((BOOST_TTI_HAS_TYPE_GEN(CType)<AType::BType,AType::BType::CType>::value));
  BOOST_TEST((BOOST_TTI_HAS_TYPE_GEN(AnotherIntegerType)<AType::BType::CType,int>::value));
  BOOST_TEST((SomethingElse<AnotherType,AType::AnIntType>::value));
  BOOST_TEST((!BOOST_TTI_HAS_TYPE_GEN(NoOtherType)<AnotherType,double>::value));
  
  return boost::report_errors();

  }