/* (c) 2014-2016 Glen Joseph Fernandes <glenjofe -at- gmail.com> Distributed under the Boost Software License, Version 1.0. http://boost.org/LICENSE_1_0.txt */ #ifndef BOOST_ALIGN_ALIGNMENT_OF_HPP #define BOOST_ALIGN_ALIGNMENT_OF_HPP #include <boost/align/detail/element_type.hpp> #include <boost/align/alignment_of_forward.hpp> #if defined(BOOST_MSVC) #include <boost/align/detail/alignment_of_msvc.hpp> #elif defined(__GNUC__) && defined(__unix__) && !defined(__LP64__) #include <boost/align/detail/alignment_of.hpp> #elif defined(BOOST_CLANG) && !defined(__x86_64__) #include <boost/align/detail/alignment_of.hpp> #elif !defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS) #include <boost/align/detail/alignment_of_cxx11.hpp> #elif defined(__ghs__) && (__GHS_VERSION_NUMBER >= 600) #include <boost/align/detail/alignment_of_gcc.hpp> #elif defined(__CODEGEARC__) #include <boost/align/detail/alignment_of_codegear.hpp> #elif defined(BOOST_CLANG) #include <boost/align/detail/alignment_of_clang.hpp> #elif __GNUC__ > 4 #include <boost/align/detail/alignment_of_gcc.hpp> #elif (__GNUC__ == 4) && (__GNUC_MINOR__ >= 3) #include <boost/align/detail/alignment_of_gcc.hpp> #else #include <boost/align/detail/alignment_of.hpp> #endif namespace boost { namespace alignment { template<class T> struct alignment_of : detail::alignment_of<typename detail::element_type<T>::type> { }; #if !defined(BOOST_NO_CXX14_VARIABLE_TEMPLATES) template<class T> constexpr std::size_t alignment_of_v = alignment_of<T>::value; #endif } /* .alignment */ } /* .boost */ #endif