File indexing completed on 2025-01-18 09:53:12
0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef BOOST_TT_REMOVE_EXTENT_HPP_INCLUDED
0010 #define BOOST_TT_REMOVE_EXTENT_HPP_INCLUDED
0011
0012 #include <boost/config.hpp>
0013 #include <boost/detail/workaround.hpp>
0014 #include <cstddef> // size_t
0015
0016 namespace boost {
0017
0018 template <class T> struct remove_extent{ typedef T type; };
0019
0020 #if !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS)
0021 template <typename T, std::size_t N> struct remove_extent<T[N]> { typedef T type; };
0022 template <typename T, std::size_t N> struct remove_extent<T const[N]> { typedef T const type; };
0023 template <typename T, std::size_t N> struct remove_extent<T volatile [N]> { typedef T volatile type; };
0024 template <typename T, std::size_t N> struct remove_extent<T const volatile [N]> { typedef T const volatile type; };
0025 #if !BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610)) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))
0026 template <typename T> struct remove_extent<T[]> { typedef T type; };
0027 template <typename T> struct remove_extent<T const[]> { typedef T const type; };
0028 template <typename T> struct remove_extent<T volatile[]> { typedef T volatile type; };
0029 template <typename T> struct remove_extent<T const volatile[]> { typedef T const volatile type; };
0030 #endif
0031 #endif
0032
0033 #if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES)
0034
0035 template <class T> using remove_extent_t = typename remove_extent<T>::type;
0036
0037 #endif
0038
0039 }
0040
0041 #endif