⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 type_with_alignment_test.cpp

📁 boost库提供标准的C++ API 配合dev c++使用,功能更加强大
💻 CPP
字号:

//  (C) Copyright John Maddock 2000. 
//  Use, modification and distribution are subject to the 
//  Boost Software License, Version 1.0. (See accompanying file 
//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

#include "test.hpp"
#include "check_integral_constant.hpp"
#ifdef TEST_STD
#  include <type_traits>
#else
#  include <boost/type_traits/alignment_of.hpp>
#  include <boost/type_traits/type_with_alignment.hpp>
#  include <boost/type_traits/is_pod.hpp>
#endif

TT_TEST_BEGIN(type_with_alignment)

BOOST_MESSAGE(typeid(::tt::type_with_alignment<
                  ::tt::alignment_of<char>::value
               >::type).name());

BOOST_CHECK(::tt::alignment_of<
               ::tt::type_with_alignment<
                  ::tt::alignment_of<char>::value
               >::type
            >::value == ::boost::alignment_of<char>::value);
BOOST_CHECK(::tt::alignment_of<
               ::tt::type_with_alignment<
                  ::tt::alignment_of<short>::value
               >::type
            >::value == ::boost::alignment_of<short>::value);
BOOST_CHECK(::tt::alignment_of<
               ::tt::type_with_alignment<
                  ::tt::alignment_of<int>::value
               >::type
            >::value == ::boost::alignment_of<int>::value);
BOOST_CHECK(::tt::alignment_of<
               ::tt::type_with_alignment<
                  ::tt::alignment_of<long>::value
               >::type
            >::value == ::boost::alignment_of<long>::value);
BOOST_CHECK(::tt::alignment_of<
               ::tt::type_with_alignment<
                  ::tt::alignment_of<float>::value
               >::type
            >::value == ::boost::alignment_of<float>::value);
BOOST_CHECK(::tt::alignment_of<
               ::tt::type_with_alignment<
                  ::tt::alignment_of<double>::value
               >::type
            >::value == ::boost::alignment_of<double>::value);
BOOST_CHECK(::tt::alignment_of<
               ::tt::type_with_alignment<
                  ::tt::alignment_of<long double>::value
               >::type
            >::value == ::boost::alignment_of<long double>::value);
#ifdef BOOST_HAS_LONG_LONG
BOOST_CHECK(::tt::alignment_of<
               ::tt::type_with_alignment<
                  ::tt::alignment_of<long long>::value
               >::type
            >::value == ::boost::alignment_of<long long>::value);
#endif
#ifdef BOOST_HAS_MS_INT64
BOOST_CHECK(::tt::alignment_of<
               ::tt::type_with_alignment<
                  ::tt::alignment_of<__int64>::value
               >::type
            >::value == ::boost::alignment_of<__int64>::value);
#endif
BOOST_CHECK(::tt::alignment_of<
               ::tt::type_with_alignment<
                  ::tt::alignment_of<int[4]>::value
               >::type
            >::value == ::boost::alignment_of<int[4]>::value);
BOOST_CHECK(::tt::alignment_of<
               ::tt::type_with_alignment<
                  ::tt::alignment_of<int(*)(int)>::value
               >::type
            >::value == ::boost::alignment_of<int(*)(int)>::value);
BOOST_CHECK(::tt::alignment_of<
               ::tt::type_with_alignment<
                  ::tt::alignment_of<int*>::value
               >::type
            >::value == ::boost::alignment_of<int*>::value);
BOOST_CHECK(::tt::alignment_of<
               ::tt::type_with_alignment<
                  ::tt::alignment_of<VB>::value
               >::type
            >::value == ::boost::alignment_of<VB>::value);
BOOST_CHECK(::tt::alignment_of<
               ::tt::type_with_alignment<
                  ::tt::alignment_of<VD>::value
               >::type
            >::value == ::boost::alignment_of<VD>::value);
BOOST_CHECK(::tt::alignment_of<
               ::tt::type_with_alignment<
                  ::tt::alignment_of<enum_UDT>::value
               >::type
            >::value == ::boost::alignment_of<enum_UDT>::value);
BOOST_CHECK(::tt::alignment_of<
               ::tt::type_with_alignment<
                  ::tt::alignment_of<mf2>::value
               >::type
            >::value == ::boost::alignment_of<mf2>::value);
BOOST_CHECK(::tt::alignment_of<
               ::tt::type_with_alignment<
                  ::tt::alignment_of<POD_UDT>::value
               >::type
            >::value == ::boost::alignment_of<POD_UDT>::value);
BOOST_CHECK(::tt::alignment_of<
               ::tt::type_with_alignment<
                  ::tt::alignment_of<empty_UDT>::value
               >::type
            >::value == ::boost::alignment_of<empty_UDT>::value);
BOOST_CHECK(::tt::alignment_of<
               ::tt::type_with_alignment<
                  ::tt::alignment_of<union_UDT>::value
               >::type
            >::value == ::boost::alignment_of<union_UDT>::value);

// check that the type produced are POD's:
BOOST_CHECK(::tt::is_pod<
               ::tt::type_with_alignment<
                  ::tt::alignment_of<char>::value>::type
            >::value);
BOOST_CHECK(::tt::is_pod<
               ::tt::type_with_alignment<
                  ::tt::alignment_of<short>::value>::type
            >::value);
BOOST_CHECK(::tt::is_pod<
               ::tt::type_with_alignment<
                  ::tt::alignment_of<int>::value>::type
            >::value);
BOOST_CHECK(::tt::is_pod<
               ::tt::type_with_alignment<
                  ::tt::alignment_of<long>::value>::type
            >::value);
BOOST_CHECK(::tt::is_pod<
               ::tt::type_with_alignment<
                  ::tt::alignment_of<float>::value>::type
            >::value);
BOOST_CHECK(::tt::is_pod<
               ::tt::type_with_alignment<
                  ::tt::alignment_of<double>::value>::type
            >::value);
BOOST_CHECK(::tt::is_pod<
               ::tt::type_with_alignment<
                  ::tt::alignment_of<long double>::value>::type
            >::value);
#ifdef BOOST_HAS_LONG_LONG
BOOST_CHECK(::tt::is_pod<
               ::tt::type_with_alignment<
                  ::tt::alignment_of<long long>::value>::type
            >::value);
#endif
#ifdef BOOST_HAS_MS_INT64
BOOST_CHECK(::tt::is_pod<
               ::tt::type_with_alignment<
                  ::tt::alignment_of<__int64>::value>::type
            >::value);
#endif
BOOST_CHECK(::tt::is_pod<
               ::tt::type_with_alignment<
                  ::tt::alignment_of<int[4]>::value>::type
            >::value);
BOOST_CHECK(::tt::is_pod<
               ::tt::type_with_alignment<
                  ::tt::alignment_of<int(*)(int)>::value>::type
            >::value);
BOOST_CHECK(::tt::is_pod<
               ::tt::type_with_alignment<
                  ::tt::alignment_of<int*>::value>::type
            >::value);
BOOST_CHECK(::tt::is_pod<
               ::tt::type_with_alignment<
                  ::tt::alignment_of<VB>::value>::type
            >::value);
BOOST_CHECK(::tt::is_pod<
               ::tt::type_with_alignment<
                  ::tt::alignment_of<VD>::value>::type
            >::value);
BOOST_CHECK(::tt::is_pod<
               ::tt::type_with_alignment<
                  ::tt::alignment_of<enum_UDT>::value>::type
            >::value);
BOOST_CHECK(::tt::is_pod<
               ::tt::type_with_alignment<
                  ::tt::alignment_of<mf2>::value>::type
            >::value);
BOOST_CHECK(::tt::is_pod<
               ::tt::type_with_alignment<
                  ::tt::alignment_of<POD_UDT>::value>::type
            >::value);
BOOST_CHECK(::tt::is_pod<
               ::tt::type_with_alignment<
                  ::tt::alignment_of<empty_UDT>::value>::type
            >::value);
BOOST_CHECK(::tt::is_pod<
               ::tt::type_with_alignment<
                  ::tt::alignment_of<union_UDT>::value>::type
            >::value);

TT_TEST_END









⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -