1 // Copyright (C) 2005 Arkadiy Vertleyb 2 // Use, modification and distribution is subject to the Boost Software 3 // License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt) 4 5 #ifndef BOOST_TYPEOF_TEST_HPP_INCLUDED 6 #define BOOST_TYPEOF_TEST_HPP_INCLUDED 7 8 #include <boost/typeof/typeof.hpp> 9 #include <boost/type_traits/is_same.hpp> 10 #include <boost/static_assert.hpp> 11 #include <boost/mpl/size_t.hpp> 12 13 namespace boost { namespace type_of { 14 15 template<class T, class U> 16 struct test_wrapper{}; 17 18 template<class T> 19 T test_make(T*); 20 21 template<class T> 22 struct test 23 { 24 BOOST_STATIC_CONSTANT(std::size_t,value = (boost::is_same< 25 BOOST_TYPEOF_TPL(test_make((test_wrapper<T, int>*)0)), 26 test_wrapper<T, int> 27 >::value) 28 ); 29 }; 30 31 }} 32 33 #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() 34 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::type_of::test_wrapper, 2) 35 36 #endif//BOOST_TYPEOF_TEST_HPP_INCLUDED 37