is_xxx_test.cpp 872 B

1234567891011121314151617181920212223
  1. // Copyright 2018 Daniel James.
  2. // Distributed under the Boost Software License, Version 1.0. (See accompanying
  3. // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  4. #include <boost/detail/is_xxx.hpp>
  5. #include <boost/static_assert.hpp>
  6. namespace is_xxx_test {
  7. template <typename T> struct thing1 {};
  8. template <typename T1, typename T2 = int> struct thing2 {};
  9. }
  10. BOOST_DETAIL_IS_XXX_DEF(thing1, is_xxx_test::thing1, 1);
  11. BOOST_DETAIL_IS_XXX_DEF(thing2, is_xxx_test::thing2, 2);
  12. BOOST_STATIC_ASSERT((is_thing1<is_xxx_test::thing1<int> >::value));
  13. BOOST_STATIC_ASSERT((!is_thing1<is_xxx_test::thing2<int> >::value));
  14. BOOST_STATIC_ASSERT((!is_thing2<is_xxx_test::thing1<int> >::value));
  15. BOOST_STATIC_ASSERT((is_thing2<is_xxx_test::thing2<int> >::value));
  16. BOOST_STATIC_ASSERT((is_thing2<is_xxx_test::thing2<int, float> >::value));
  17. int main() {}