|
2 | 2 | #define _GHLIBCPP_MEMORY |
3 | 3 | #include "exception.h" |
4 | 4 | #include "stddef.h" |
| 5 | +#include "utility.h" |
5 | 6 |
|
6 | 7 | namespace std { |
7 | 8 |
|
@@ -166,6 +167,98 @@ template <typename T1> struct allocator_traits { |
166 | 167 | static void deallocate(T1 &, pointer, size_type); |
167 | 168 | }; |
168 | 169 |
|
| 170 | +// uninitialized_default_construct |
| 171 | +template <class T1> |
| 172 | +void uninitialized_default_construct(T1, T1); |
| 173 | + |
| 174 | +template <class T1, class T2> |
| 175 | +void uninitialized_default_construct(T1&&, T2, T2); |
| 176 | + |
| 177 | +// uninitialized_default_construct_n |
| 178 | +template <class T1, class T2> |
| 179 | +T1 uninitialized_default_construct_n(T1, T2); |
| 180 | + |
| 181 | +template <class T1, class T2, class T3> |
| 182 | +T2 uninitialized_default_construct_n(T1&&, T2, T3); |
| 183 | + |
| 184 | +// uninitialized_value_construct |
| 185 | +template <class T1> |
| 186 | +void uninitialized_value_construct(T1, T1); |
| 187 | + |
| 188 | +template <class T1, class T2> |
| 189 | +void uninitialized_value_construct(T1&&, T2, T2); |
| 190 | + |
| 191 | +// uninitialized_value_construct_n |
| 192 | +template <class T1, class T2> |
| 193 | +T1 uninitialized_value_construct_n(T1, T2); |
| 194 | + |
| 195 | +template <class T1, class T2, class T3> |
| 196 | +T2 uninitialized_value_construct_n(T1&&, T2, T3); |
| 197 | + |
| 198 | +// uninitialized_copy |
| 199 | +template <class T1, class T2> |
| 200 | +T2 uninitialized_copy(T1, T1, T2); |
| 201 | + |
| 202 | +template <class T1, class T2, class T3> |
| 203 | +T3 uninitialized_copy(T1&&, T2, T2, T3); |
| 204 | + |
| 205 | +// uninitialized_copy_n |
| 206 | +template <class T1, class T2, class T3> |
| 207 | +T3 uninitialized_copy_n(T1, T2, T3); |
| 208 | + |
| 209 | +template <class T1, class T2, class T3, class T4> |
| 210 | +T4 uninitialized_copy_n(T1&&, T2, T3, T4); |
| 211 | + |
| 212 | +// uninitialized_move |
| 213 | +template <class T1, class T2> |
| 214 | +T2 uninitialized_move(T1, T1, T2); |
| 215 | + |
| 216 | +template <class T1, class T2, class T3> |
| 217 | +T3 uninitialized_move(T1&&, T2, T2, T3); |
| 218 | + |
| 219 | +// uninitialized_move_n |
| 220 | +template <class T1, class T2, class T3> |
| 221 | +pair<T1, T3> uninitialized_move_n(T1, T2, T3); |
| 222 | + |
| 223 | +template <class T1, class T2, class T3, class T4> |
| 224 | +pair<T2, T4> uninitialized_move_n(T1&&, T2, T3, T4); |
| 225 | + |
| 226 | +// uninitialized_fill |
| 227 | +template <class T1, class T2> |
| 228 | +void uninitialized_fill(T1, T1, const T2&); |
| 229 | + |
| 230 | +template <class T1, class T2, class T3> |
| 231 | +void uninitialized_fill(T1&&, T2, T2, const T3&); |
| 232 | + |
| 233 | +// uninitialized_fill_n |
| 234 | +template <class T1, class T2, class T3> |
| 235 | +T1 uninitialized_fill_n(T1, T2, const T3&); |
| 236 | + |
| 237 | +template <class T1, class T2, class T3, class T4> |
| 238 | +T2 uninitialized_fill_n(T1&&, T2, T3, const T4&); |
| 239 | + |
| 240 | +// destroy_at |
| 241 | +template <class T1> |
| 242 | +void destroy_at(T1*); |
| 243 | + |
| 244 | +// destroy |
| 245 | +template <class T1> |
| 246 | +void destroy(T1, T1); |
| 247 | + |
| 248 | +template <class T1, class T2> |
| 249 | +void destroy(T1&&, T2, T2); |
| 250 | + |
| 251 | +// destroy_n |
| 252 | +template <class T1, class T2> |
| 253 | +T1 destroy_n(T1, T2); |
| 254 | + |
| 255 | +template <class T1, class T2, class T3> |
| 256 | +T2 destroy_n(T1&&, T2, T3); |
| 257 | + |
| 258 | +// launder |
| 259 | +template <class T1> |
| 260 | +constexpr T1* launder(T1*) noexcept; |
| 261 | + |
169 | 262 | } // namespace std |
170 | 263 |
|
171 | 264 | #endif // _GHLIBCPP_MEMORY |
0 commit comments