2 // (C) Copyright John Maddock 2000.
3 // Use, modification and distribution are subject to the
4 // Boost Software License, Version 1.0. (See accompanying file
5 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
8 #include "check_integral_constant.hpp"
10 # include <type_traits>
12 # include <boost/type_traits/is_empty.hpp>
15 struct non_default_constructable_UDT
17 non_default_constructable_UDT(const non_default_constructable_UDT
&){}
19 non_default_constructable_UDT(){}
22 TT_TEST_BEGIN(is_empty
)
24 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_empty
<int>::value
, false);
25 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_empty
<int*>::value
, false);
26 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_empty
<int&>::value
, false);
27 #ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
28 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_empty
<int&&>::value
, false);
30 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_empty
<void>::value
, false);
31 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_empty
<int[2]>::value
, false);
32 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_empty
<f1
>::value
, false);
33 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_empty
<mf1
>::value
, false);
34 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_empty
<UDT
>::value
, false);
36 BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::is_empty
<empty_UDT
>::value
, true, false);
37 BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::is_empty
<empty_POD_UDT
>::value
, true, false);
38 BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::is_empty
<non_default_constructable_UDT
>::value
, true, false);
39 BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::is_empty
<boost::noncopyable
>::value
, true, false);
41 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_empty
<enum_UDT
>::value
, false);
42 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_empty
<non_empty
>::value
, false);
43 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_empty
<const non_empty
&>::value
, false);
44 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_empty
<foo4_t
>::value
, false);