1// Copyright 2023 Peter Dimov
2// Distributed under the Boost Software License, Version 1.0.
3// https://www.boost.org/LICENSE_1_0.txt
4
5#include <boost/core/max_align.hpp>
6#include <boost/core/lightweight_test.hpp>
7#include <boost/type_traits.hpp>
8#include <boost/config.hpp>
9#include <cstddef>
10
11#if defined(BOOST_LIBSTDCXX_VERSION) && BOOST_LIBSTDCXX_VERSION < 40900
12# define BOOST_NO_STD_MAX_ALIGN_T
13#endif
14
15struct X
16{
17};
18
19int main()
20{
21 BOOST_TEST_EQ( boost::core::max_align, boost::alignment_of<boost::core::max_align_t>::value );
22
23 BOOST_TEST_GE( boost::core::max_align, boost::alignment_of<char>::value );
24 BOOST_TEST_GE( boost::core::max_align, boost::alignment_of<short>::value );
25 BOOST_TEST_GE( boost::core::max_align, boost::alignment_of<int>::value );
26 BOOST_TEST_GE( boost::core::max_align, boost::alignment_of<long>::value );
27
28#if !defined(BOOST_NO_LONG_LONG)
29
30 BOOST_TEST_GE( boost::core::max_align, boost::alignment_of<boost::long_long_type>::value );
31
32#endif
33
34#if defined(BOOST_HAS_INT128)
35
36 BOOST_TEST_GE( boost::core::max_align, boost::alignment_of<boost::int128_type>::value );
37
38#endif
39
40 BOOST_TEST_GE( boost::core::max_align, boost::alignment_of<float>::value );
41 BOOST_TEST_GE( boost::core::max_align, boost::alignment_of<double>::value );
42 BOOST_TEST_GE( boost::core::max_align, boost::alignment_of<long double>::value );
43
44#if defined(BOOST_CORE_HAS_FLOAT128)
45
46 BOOST_TEST_GE( boost::core::max_align, boost::alignment_of<__float128>::value );
47
48#endif
49
50 BOOST_TEST_GE( boost::core::max_align, boost::alignment_of<void*>::value );
51 BOOST_TEST_GE( boost::core::max_align, boost::alignment_of<void(*)()>::value );
52
53 BOOST_TEST_GE( boost::core::max_align, boost::alignment_of<int X::*>::value );
54 BOOST_TEST_GE( boost::core::max_align, boost::alignment_of<void (X::*)()>::value );
55
56#if !defined(BOOST_NO_CXX11_ALIGNOF) && !defined(BOOST_NO_STD_MAX_ALIGN_T)
57
58 BOOST_TEST_GE( boost::core::max_align, alignof( std::max_align_t ) );
59
60#endif
61
62 return boost::report_errors();
63}
64

source code of boost/libs/core/test/max_align_test.cpp