/////////////////////////////////////////////////////////////////////////////// // Copyright 2012 John Maddock. // Copyright Christopher Kormanyos 2013. Distributed under 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) // #ifndef BOOST_MP_DETAIL_DYNAMIC_ARRAY_HPP #define BOOST_MP_DETAIL_DYNAMIC_ARRAY_HPP #include #include #include #include #include namespace boost { namespace multiprecision { namespace backends { namespace detail { template struct dynamic_array : public std::vector::type> { private: using base_class_type = std::vector::type>; public: dynamic_array() : base_class_type(static_cast(ElemNumber), static_cast(0u)) { } dynamic_array(std::initializer_list lst) : base_class_type(static_cast(ElemNumber), static_cast(0u)) { std::copy(lst.begin(), lst.begin() + (std::min)(std::size_t(lst.size()), std::size_t(ElemNumber)), data()); } typename base_class_type::value_type* data() { return &(*(this->begin())); } const typename base_class_type::value_type* data() const { return &(*(this->begin())); } }; }}}} // namespace boost::multiprecision::backends::detail #endif // BOOST_MP_DETAIL_DYNAMIC_ARRAY_HPP