poly_collection_synopsis.qbk 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. [/
  2. Copyright 2016-2017 Joaquin M Lopez Munoz.
  3. Distributed under the Boost Software License, Version 1.0.
  4. (See accompanying file LICENSE_1_0.txt or copy at
  5. http://www.boost.org/LICENSE_1_0.txt)
  6. ]
  7. [template poly_collection_synopsis[class_name template_header value_type]
  8. ``[template_header]``
  9. class ``[class_name]``
  10. {
  11. public:
  12. ``[link poly_collection.reference.polymorphic_containers.polymorphic_collections.types ['// types:]]``
  13. using value_type=``[value_type]``;
  14. using allocator_type=Allocator;
  15. using size_type=std::size_t;
  16. using difference_type=std::ptrdiff_t;
  17. using reference=value_type&;
  18. using const_reference=const value_type&;
  19. using pointer=typename std::allocator_traits<Allocator>::pointer;
  20. using const_pointer=typename std::allocator_traits<Allocator>::const_pointer;
  21. using iterator=``/implementation-defined/``;
  22. using const_iterator=``/implementation-defined/``;
  23. using _local_base_iterator_=``/implementation-defined/``;
  24. using _const_local_base_iterator_=``/implementation-defined/``;
  25. template<typename T> using _local_iterator_=``/implementation-defined/``;
  26. template<typename T> using _const_local_iterator_=``/implementation-defined/``;
  27. class _const_base_segment_info_;
  28. class _base_segment_info_;
  29. template<typename T> class _const_segment_info_;
  30. template<typename T> class _segment_info_;
  31. using _base_segment_info_iterator_=``/implementation-defined/``;
  32. using _const_base_segment_info_iterator_=``/implementation-defined/``;
  33. class _const_segment_traversal_info_;
  34. class _segment_traversal_info_;
  35. ``[link poly_collection.reference.polymorphic_containers.polymorphic_collections.construct_copy_destroy ['// construct/destroy/copy:]]``
  36. ``[class_name]``();
  37. ``[class_name]``(const ``[class_name]``&);
  38. ``[class_name]``(``[class_name]``&&);
  39. explicit ``[class_name]``(const allocator_type& al);
  40. ``[class_name]``(const ``[class_name]``& x,const allocator_type& al);
  41. ``[class_name]``(``[class_name]``&& x,const allocator_type& al);
  42. template<typename InputIterator>
  43. ``[link poly_collection.reference.polymorphic_containers.polymorphic_collections.construct_copy_destroy.range_construction [class_name]]``(
  44. InputIterator first,InputIterator last,
  45. const allocator_type& al=allocator_type{});
  46. ``[class_name]``& operator=(const ``[class_name]``&);
  47. ``[class_name]``& operator=(``[class_name]``&&);
  48. allocator_type get_allocator()const noexcept;
  49. ``[link poly_collection.reference.polymorphic_containers.polymorphic_collections.type_registration ['// type registration:]]``
  50. template<typename... T>
  51. void _register_types_();
  52. bool _is_registered_(const std::type_info& info)const;
  53. template<typename T> bool _is_registered_()const;
  54. ``[link poly_collection.reference.polymorphic_containers.polymorphic_collections.iterators ['// iterators:]]``
  55. iterator _begin_()noexcept;
  56. iterator _end_()noexcept;
  57. const_iterator _begin_()const noexcept;
  58. const_iterator _end_()const noexcept;
  59. const_iterator _cbegin_()const noexcept;
  60. const_iterator _cend_()const noexcept;
  61. local_base_iterator _begin_(const std::type_info& info);
  62. local_base_iterator _end_(const std::type_info& info);
  63. const_local_base_iterator _begin_(const std::type_info& info)const;
  64. const_local_base_iterator _end_(const std::type_info& info)const;
  65. const_local_base_iterator _cbegin_(const std::type_info& info)const;
  66. const_local_base_iterator _cend_(const std::type_info& info)const;
  67. template<typename T> local_iterator<T> _begin_();
  68. template<typename T> local_iterator<T> _end_();
  69. template<typename T> const_local_iterator<T> _begin_()const;
  70. template<typename T> const_local_iterator<T> _end_()const;
  71. template<typename T> const_local_iterator<T> _cbegin_()const;
  72. template<typename T> const_local_iterator<T> _cend_()const;
  73. base_segment_info _segment_(const std::type_info& info);
  74. const_base_segment_info _segment_(const std::type_info& info)const;
  75. template<typename T> segment_info<T> _segment_();
  76. template<typename T> const_segment_info<T> _segment_()const;
  77. segment_traversal_info _segment_traversal_()noexcept;
  78. const_segment_traversal_info _segment_traversal_()const noexcept;
  79. ``[link poly_collection.reference.polymorphic_containers.polymorphic_collections.capacity ['// capacity:]]``
  80. bool empty()const noexcept;
  81. bool _empty_(const std::type_info& info)const;
  82. template<typename T> bool _empty_()const;
  83. size_type size()const noexcept;
  84. size_type _size_(const std::type_info& info)const;
  85. template<typename T> size_type _size_()const;
  86. size_type _max_size_(const std::type_info& info)const;
  87. template<typename T> size_type _max_size_()const;
  88. size_type _capacity_(const std::type_info& info)const;
  89. template<typename T> size_type _capacity_()const;
  90. void _reserve_(size_type n);
  91. void _reserve_(const std::type_info& info,size_type n);
  92. template<typename T>void _reserve_(size_type n);
  93. void _shrink_to_fit_();
  94. void _shrink_to_fit_(const std::type_info& info);
  95. template<typename T> void _shrink_to_fit_();
  96. ``[link poly_collection.reference.polymorphic_containers.polymorphic_collections.modifiers ['// modifiers:]]``
  97. template<typename T,typename... Args>
  98. iterator _emplace_(Args&&... args);
  99. template<typename T,typename... Args>
  100. iterator _emplace_hint_(const_iterator hint,Args&&... args);
  101. template<typename T,typename LocalIterator,typename... Args>
  102. auto _emplace_pos_(LocalIterator pos,Args&&... args);
  103. template<typename T>
  104. iterator _insert_(T&& x);
  105. template<typename CollectionIterator,typename T>
  106. auto _insert_hint_(CollectionIterator hint,T&& x);
  107. template<typename InputIterator>
  108. void _insert_range_(InputIterator first,InputIterator last);
  109. template<typename CollectionIterator,typename InputIterator>
  110. void _insert_hint_range_(CollectionIterator hint,InputIterator first,InputIterator last);
  111. template<typename CollectionIterator>
  112. auto _erase_(CollectionIterator pos);
  113. template<typename CollectionIterator>
  114. auto _erase_(CollectionIterator first,CollectionIterator last);
  115. void _clear_()noexcept;
  116. void _clear_(const std::type_info& info);
  117. template<typename T> void _clear_();
  118. void swap(``[class_name]``& x);
  119. };
  120. ]