doc tweaks
[luabind.git] / test / test_typetraits.cpp
blob62680b2b68a8270cd2b495e7b939cbb3972de7b1
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;
9 struct tester {};
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);