2 // Copyright Peter Dimov 2017
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.tt.org/LICENSE_1_0.txt)
8 # include <type_traits>
10 # include <boost/type_traits.hpp>
13 #include "check_type.hpp"
16 TT_TEST_BEGIN(cxx14_aliases_test
)
18 #if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES)
20 BOOST_CHECK_TYPE(tt::add_const_t
<int>, int const);
21 BOOST_CHECK_TYPE(tt::add_cv_t
<int>, int const volatile);
22 BOOST_CHECK_TYPE(tt::add_lvalue_reference_t
<int>, int&);
23 BOOST_CHECK_TYPE(tt::add_pointer_t
<int>, int*);
24 BOOST_CHECK_TYPE(tt::add_rvalue_reference_t
<int>, int&&);
25 BOOST_CHECK_TYPE(tt::add_volatile_t
<int>, int volatile);
26 BOOST_CHECK_TYPE3(tt::common_type_t
<char, short>, int);
27 BOOST_CHECK_TYPE4(tt::conditional_t
<true, char, short>, char);
28 BOOST_CHECK_TYPE4(tt::conditional_t
<false, char, short>, short);
29 BOOST_CHECK_TYPE3(tt::copy_cv_t
<char, short const volatile>, char const volatile);
30 BOOST_CHECK_TYPE(tt::decay_t
<char const(&)[7]>, char const*);
31 BOOST_CHECK_TYPE(tt::make_signed_t
<unsigned char>, signed char);
32 BOOST_CHECK_TYPE(tt::make_unsigned_t
<signed char>, unsigned char);
33 BOOST_CHECK_TYPE(tt::remove_all_extents_t
<int[][10][20]>, int);
34 BOOST_CHECK_TYPE(tt::remove_const_t
<int const>, int);
35 BOOST_CHECK_TYPE(tt::remove_cv_t
<int const volatile>, int);
36 BOOST_CHECK_TYPE(tt::remove_extent_t
<int[]>, int);
37 BOOST_CHECK_TYPE(tt::remove_pointer_t
<int*>, int);
38 BOOST_CHECK_TYPE(tt::remove_reference_t
<int&>, int);
39 BOOST_CHECK_TYPE(tt::remove_volatile_t
<int volatile>, int);
40 BOOST_CHECK_TYPE(tt::floating_point_promotion_t
<float>, double);
41 BOOST_CHECK_TYPE(tt::integral_promotion_t
<char>, int);
42 BOOST_CHECK_TYPE(tt::promote_t
<char>, int);