]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/type_traits/test/is_floating_point_test.cpp
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);
32 #ifdef BOOST_HAS_FLOAT128
33 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<__float128
>::value
, true);
34 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<const __float128
>::value
, true);
35 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<volatile __float128
>::value
, true);
36 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<const volatile __float128
>::value
, true);
40 // cases that should not be true:
42 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<void>::value
, false);
43 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<int>::value
, false);
44 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<UDT
>::value
, false);
45 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<test_abc1
>::value
, false);
46 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<empty_UDT
>::value
, false);
47 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<float*>::value
, false);
48 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<float&>::value
, false);
49 #ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
50 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<float&&>::value
, false);
52 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<const float&>::value
, false);
53 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<float[2]>::value
, false);
58 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<test_abc1
>::value
, false);
59 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<foo0_t
>::value
, false);
60 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<foo1_t
>::value
, false);
61 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<foo2_t
>::value
, false);
62 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<foo3_t
>::value
, false);
63 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<foo4_t
>::value
, false);
64 BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_floating_point
<incomplete_type
>::value
, false);