2 // (C) Copyright John Maddock 2005.
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_floating_point.hpp>
15 TT_TEST_BEGIN(is_floating_point
)
17 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<float>::value
, true);
18 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<float const>::value
, true);
19 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<float volatile>::value
, true);
20 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<float const volatile>::value
, true);
22 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<double>::value
, true);
23 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<double const>::value
, true);
24 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<double volatile>::value
, true);
25 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<double const volatile>::value
, true);
27 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<long double>::value
, true);
28 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<long double const>::value
, true);
29 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<long double volatile>::value
, true);
30 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<long double const volatile>::value
, true);
33 // cases that should not be true:
35 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<void>::value
, false);
36 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<int>::value
, false);
37 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<UDT
>::value
, false);
38 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<test_abc1
>::value
, false);
39 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<empty_UDT
>::value
, false);
40 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<float*>::value
, false);
41 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<float&>::value
, false);
42 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<const float&>::value
, false);
43 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<float[2]>::value
, false);
48 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<test_abc1
>::value
, false);
49 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<foo0_t
>::value
, false);
50 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<foo1_t
>::value
, false);
51 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<foo2_t
>::value
, false);
52 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<foo3_t
>::value
, false);
53 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<foo4_t
>::value
, false);
54 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<incomplete_type
>::value
, false);