@@ -14,7 +14,7 @@ namespace v0
1414namespace Containers
1515{
1616
17- template <typename T, std::integral HandleType, template <typename T2 > typename BackingType>
17+ template <typename T, std::integral HandleType, template <typename T2 , typename Allocator > typename BackingType>
1818 HandleType SlotMap<T, HandleType, BackingType>::push_back(T element) noexcept {
1919 const auto data_size = data_.size ();
2020 data_.push_back (std::move (element));
@@ -36,84 +36,84 @@ namespace Containers
3636 }
3737 }
3838
39- template <typename T, std::integral HandleType, template <typename T2 > typename BackingType>
39+ template <typename T, std::integral HandleType, template <typename T2 , typename Allocator > typename BackingType>
4040 template <class ...Args>
4141 HandleType SlotMap<T, HandleType, BackingType>::emplace_back(Args&&... args) noexcept {
4242 // TODO: constructing the element then moving it to push_back() really defeats the purpose of an emplace_back.
4343 // Do this correctly.
4444 return push_back (T{ std::forward<Args>(args)... });
4545 }
4646
47- template <typename T, std::integral HandleType, template <typename T2 > typename BackingType>
47+ template <typename T, std::integral HandleType, template <typename T2 , typename Allocator > typename BackingType>
4848 typename SlotMap<T, HandleType, BackingType>::reference SlotMap<T, HandleType, BackingType>::operator [](HandleType handle) noexcept {
4949 // Assumes |handle| is within range.
5050
5151 const auto index = indices_[handle];
5252 return data_[index];
5353 }
5454
55- template <typename T, std::integral HandleType, template <typename T2 > typename BackingType>
55+ template <typename T, std::integral HandleType, template <typename T2 , typename Allocator > typename BackingType>
5656 typename SlotMap<T, HandleType, BackingType>::const_reference SlotMap<T, HandleType, BackingType>::operator [](HandleType handle) const noexcept {
5757 // Assumes |handle| is within range.
5858
5959 const auto index = indices_[handle];
6060 return data_[index];
6161 }
6262
63- template <typename T, std::integral HandleType, template <typename T2 > typename BackingType>
63+ template <typename T, std::integral HandleType, template <typename T2 , typename Allocator > typename BackingType>
6464 void SlotMap<T, HandleType, BackingType>::remove(HandleType handle) noexcept {
6565 remove_by_index (indices_[handle]);
6666 }
6767
68- template <typename T, std::integral HandleType, template <typename T2 > typename BackingType>
68+ template <typename T, std::integral HandleType, template <typename T2 , typename Allocator > typename BackingType>
6969 void SlotMap<T, HandleType, BackingType>::pop_back() noexcept {
7070 remove_by_index (data_.size () - 1 );
7171 }
7272
7373
7474
7575 // Required to satisfy the C++ "Container" requirements
76- template <typename T, std::integral HandleType, template <typename T2 > typename BackingType>
76+ template <typename T, std::integral HandleType, template <typename T2 , typename Allocator > typename BackingType>
7777 typename SlotMap<T, HandleType, BackingType>::iterator SlotMap<T, HandleType, BackingType>::begin() noexcept {
7878 return data_.begin ();
7979 }
8080
81- template <typename T, std::integral HandleType, template <typename T2 > typename BackingType>
81+ template <typename T, std::integral HandleType, template <typename T2 , typename Allocator > typename BackingType>
8282 typename SlotMap<T, HandleType, BackingType>::const_iterator SlotMap<T, HandleType, BackingType>::begin() const noexcept {
8383 return data_.begin ();
8484 }
8585
86- template <typename T, std::integral HandleType, template <typename T2 > typename BackingType>
86+ template <typename T, std::integral HandleType, template <typename T2 , typename Allocator > typename BackingType>
8787 typename SlotMap<T, HandleType, BackingType>::const_iterator SlotMap<T, HandleType, BackingType>::cbegin() const noexcept {
8888 return data_.begin ();
8989 }
9090
91- template <typename T, std::integral HandleType, template <typename T2 > typename BackingType>
91+ template <typename T, std::integral HandleType, template <typename T2 , typename Allocator > typename BackingType>
9292 typename SlotMap<T, HandleType, BackingType>::iterator SlotMap<T, HandleType, BackingType>::end() noexcept {
9393 return data_.end ();
9494 }
9595
96- template <typename T, std::integral HandleType, template <typename T2 > typename BackingType>
96+ template <typename T, std::integral HandleType, template <typename T2 , typename Allocator > typename BackingType>
9797 typename SlotMap<T, HandleType, BackingType>::const_iterator SlotMap<T, HandleType, BackingType>::end() const noexcept {
9898 return data_.end ();
9999 }
100100
101- template <typename T, std::integral HandleType, template <typename T2 > typename BackingType>
101+ template <typename T, std::integral HandleType, template <typename T2 , typename Allocator > typename BackingType>
102102 typename SlotMap<T, HandleType, BackingType>::const_iterator SlotMap<T, HandleType, BackingType>::cend() noexcept {
103103 return data_.end ();
104104 }
105105
106- template <typename T, std::integral HandleType, template <typename T2 > typename BackingType>
106+ template <typename T, std::integral HandleType, template <typename T2 , typename Allocator > typename BackingType>
107107 typename SlotMap<T, HandleType, BackingType>::size_type SlotMap<T, HandleType, BackingType>::size() const noexcept {
108108 return data_.size ();
109109 }
110110
111- template <typename T, std::integral HandleType, template <typename T2 > typename BackingType>
111+ template <typename T, std::integral HandleType, template <typename T2 , typename Allocator > typename BackingType>
112112 constexpr typename SlotMap<T, HandleType, BackingType>::size_type SlotMap<T, HandleType, BackingType>::max_size() const noexcept {
113113 return data_.max_size ();
114114 }
115115
116- template <typename T, std::integral HandleType, template <typename T2 > typename BackingType>
116+ template <typename T, std::integral HandleType, template <typename T2 , typename Allocator > typename BackingType>
117117 void SlotMap<T, HandleType, BackingType>::remove_by_index(size_t index) noexcept {
118118 // Removing an element in the middle of a vector will cause all elements after it to shift over.
119119 // Removing the final element does not have this effect.
@@ -143,19 +143,19 @@ namespace Containers
143143 indices_[reverse_index] = index;
144144 }
145145
146- template <typename T, std::integral HandleType, template <typename T2 > typename BackingType>
146+ template <typename T, std::integral HandleType, template <typename T2 , typename Allocator > typename BackingType>
147147 bool operator ==(const SlotMap<T, HandleType, BackingType>& lhs, const SlotMap<T, HandleType, BackingType>& rhs) noexcept {
148148 return lhs.indices_ == rhs.indices_ &&
149149 lhs.data_ == rhs.data_ &&
150150 lhs.reverse_indices_ == rhs.reverse_indices_ ;
151151 }
152152
153- template <typename T, std::integral HandleType, template <typename T2 > typename BackingType>
153+ template <typename T, std::integral HandleType, template <typename T2 , typename Allocator > typename BackingType>
154154 bool operator !=(const SlotMap<T, HandleType, BackingType>& lhs, const SlotMap<T, HandleType, BackingType>& rhs) noexcept {
155155 return !(lhs == rhs);
156156 }
157157
158- template <typename T, std::integral HandleType, template <typename T2 > typename BackingType>
158+ template <typename T, std::integral HandleType, template <typename T2 , typename Allocator > typename BackingType>
159159 void swap (SlotMap<T, HandleType, BackingType>& lhs, SlotMap<T, HandleType, BackingType>& rhs) noexcept {
160160 using std::swap;
161161
0 commit comments