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