1 #include <luabind/detail/typetraits.hpp>
2 #include <luabind/detail/is_indirect_const.hpp>
3 #include <luabind/detail/pointee_sizeof.hpp>
4 #include <boost/static_assert.hpp>
6 using namespace luabind
;
7 using namespace luabind::detail
;
11 void test_type_traits()
13 BOOST_STATIC_ASSERT(is_nonconst_reference
<int&>::value
);
14 BOOST_STATIC_ASSERT(!is_nonconst_reference
<const int&>::value
);
15 BOOST_STATIC_ASSERT(is_nonconst_reference
<tester
&>::value
);
16 BOOST_STATIC_ASSERT(!is_nonconst_reference
<const tester
&>::value
);
18 BOOST_STATIC_ASSERT(!is_const_reference
<int&>::value
);
19 BOOST_STATIC_ASSERT(is_const_reference
<const int&>::value
);
20 BOOST_STATIC_ASSERT(!is_const_reference
<tester
&>::value
);
21 BOOST_STATIC_ASSERT(is_const_reference
<const tester
&>::value
);
23 BOOST_STATIC_ASSERT(!is_const_pointer
<int*>::value
);
24 BOOST_STATIC_ASSERT(is_const_pointer
<const int*>::value
);
25 BOOST_STATIC_ASSERT(!is_const_pointer
<tester
*>::value
);
26 BOOST_STATIC_ASSERT(is_const_pointer
<const tester
*>::value
);
28 BOOST_STATIC_ASSERT(is_nonconst_pointer
<int*>::value
);
29 BOOST_STATIC_ASSERT(!is_nonconst_pointer
<const int*>::value
);
30 BOOST_STATIC_ASSERT(is_nonconst_pointer
<tester
*>::value
);
31 BOOST_STATIC_ASSERT(!is_nonconst_pointer
<const tester
*>::value
);
33 BOOST_STATIC_ASSERT(!is_const_reference
<const tester
>::value
);
35 BOOST_STATIC_ASSERT(!luabind::is_indirect_const
<int&>::value
);
36 BOOST_STATIC_ASSERT(is_indirect_const
<const int>::value
);
37 BOOST_STATIC_ASSERT(is_indirect_const
<const int&>::value
);
38 BOOST_STATIC_ASSERT(!is_indirect_const
<int*>::value
);
39 BOOST_STATIC_ASSERT(is_indirect_const
<const int*>::value
);