| 752 | //! \tparam Options A type produced from \c boost::container::vector_options. |
| 753 | template <class T, class A BOOST_CONTAINER_DOCONLY(= void), class Options BOOST_CONTAINER_DOCONLY(= void) > |
| 754 | class vector |
| 755 | { |
| 756 | public: |
| 757 | ////////////////////////////////////////////// |
| 758 | // |
| 759 | // types |
| 760 | // |
| 761 | ////////////////////////////////////////////// |
| 762 | typedef T value_type; |
| 763 | typedef BOOST_CONTAINER_IMPDEF |
| 764 | (typename real_allocator<T BOOST_MOVE_I A>::type) allocator_type; |
| 765 | typedef ::boost::container::allocator_traits<allocator_type> allocator_traits_t; |
| 766 | typedef typename allocator_traits<allocator_type>::pointer pointer; |
| 767 | typedef typename allocator_traits<allocator_type>::const_pointer const_pointer; |
| 768 | typedef typename allocator_traits<allocator_type>::reference reference; |
| 769 | typedef typename allocator_traits<allocator_type>::const_reference const_reference; |
| 770 | typedef typename allocator_traits<allocator_type>::size_type size_type; |
| 771 | typedef typename allocator_traits<allocator_type>::difference_type difference_type; |
| 772 | typedef allocator_type stored_allocator_type; |
| 773 | typedef BOOST_CONTAINER_IMPDEF(vec_iterator<pointer BOOST_MOVE_I false>) iterator; |
| 774 | typedef BOOST_CONTAINER_IMPDEF(vec_iterator<pointer BOOST_MOVE_I true >) const_iterator; |
| 775 | typedef BOOST_CONTAINER_IMPDEF(boost::container::reverse_iterator<iterator>) reverse_iterator; |
| 776 | typedef BOOST_CONTAINER_IMPDEF(boost::container::reverse_iterator<const_iterator>) const_reverse_iterator; |
| 777 | |
| 778 | private: |
| 779 | |
| 780 | #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED |
| 781 | typedef typename boost::container:: |
| 782 | allocator_traits<allocator_type>::size_type alloc_size_type; |
| 783 | typedef typename get_vector_opt<Options, alloc_size_type>::type options_type; |
| 784 | typedef typename options_type::growth_factor_type growth_factor_type; |
| 785 | typedef typename options_type::stored_size_type stored_size_type; |
| 786 | typedef value_less<T> value_less_t; |
| 787 | |
| 788 | //If provided the stored_size option must specify a type that is equal or a type that is smaller. |
| 789 | BOOST_STATIC_ASSERT( (sizeof(stored_size_type) < sizeof(alloc_size_type) || |
| 790 | dtl::is_same<stored_size_type, alloc_size_type>::value) ); |
| 791 | |
| 792 | typedef typename dtl::version<allocator_type>::type alloc_version; |
| 793 | typedef boost::container::vector_alloc_holder |
| 794 | <allocator_type, stored_size_type> alloc_holder_t; |
| 795 | |
| 796 | alloc_holder_t m_holder; |
| 797 | |
| 798 | typedef allocator_traits<allocator_type> allocator_traits_type; |
| 799 | template <class U, class UA, class UOptions> |
| 800 | friend class vector; |
| 801 | |
| 802 | |
| 803 | protected: |
| 804 | BOOST_CONTAINER_FORCEINLINE |
| 805 | static bool is_propagable_from(const allocator_type &from_alloc, pointer p, const allocator_type &to_alloc, bool const propagate_allocator) |
| 806 | { return alloc_holder_t::is_propagable_from(from_alloc, p, to_alloc, propagate_allocator); } |
| 807 | |
| 808 | BOOST_CONTAINER_FORCEINLINE |
| 809 | static bool are_swap_propagable( const allocator_type &l_a, pointer l_p |
| 810 | , const allocator_type &r_a, pointer r_p, bool const propagate_allocator) |
| 811 | { return alloc_holder_t::are_swap_propagable(l_a, l_p, r_a, r_p, propagate_allocator); } |
nothing calls this directly
no test coverage detected