/* * Copyright (c) 2012 Glen Joseph Fernandes * glenfe at live dot com * * Distributed under the Boost Software License, * Version 1.0. (See accompanying file LICENSE_1_0.txt * or copy at http://boost.org/LICENSE_1_0.txt) */ #ifndef BOOST_SMART_PTR_DETAIL_ARRAY_TRAITS_HPP #define BOOST_SMART_PTR_DETAIL_ARRAY_TRAITS_HPP #include #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST) #include #endif namespace boost { namespace detail { template struct array_type { typedef typename boost::remove_cv::type type; }; #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) template struct array_type { typedef typename array_type::type type; }; #endif template struct array_size { enum { size = 1 }; }; #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) template struct array_size { enum { size = N * array_size::size }; }; #endif #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST) template struct array_list { }; #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) template struct array_list { typedef std::initializer_list type; }; #endif #endif } } #endif