@@ -35,9 +35,6 @@ class unique_ptr {
3535 T *get () { return ptr; }
3636 unique_ptr<T> &operator =(const unique_ptr &) = delete ;
3737 unique_ptr<T> &operator =(unique_ptr &&) { return *this ; }
38- template <typename T> unique_ptr &operator =(unique_ptr<T> &&) {
39- return *this ;
40- }
4138
4239private:
4340 T *ptr;
@@ -185,107 +182,90 @@ template <typename T1> struct allocator_traits {
185182};
186183
187184// uninitialized_default_construct
188- template <class T1 >
189- void uninitialized_default_construct (T1 , T1 );
185+ template <class T1 > void uninitialized_default_construct (T1 , T1 );
190186
191187template <class T1 , class T2 >
192- void uninitialized_default_construct (T1 &&, T2 , T2 );
188+ void uninitialized_default_construct (T1 &&, T2 , T2 );
193189
194190// uninitialized_default_construct_n
195- template <class T1 , class T2 >
196- T1 uninitialized_default_construct_n (T1 , T2 );
191+ template <class T1 , class T2 > T1 uninitialized_default_construct_n (T1 , T2 );
197192
198193template <class T1 , class T2 , class T3 >
199- T2 uninitialized_default_construct_n (T1 &&, T2 , T3 );
194+ T2 uninitialized_default_construct_n (T1 &&, T2 , T3 );
200195
201196// uninitialized_value_construct
202- template <class T1 >
203- void uninitialized_value_construct (T1 , T1 );
197+ template <class T1 > void uninitialized_value_construct (T1 , T1 );
204198
205- template <class T1 , class T2 >
206- void uninitialized_value_construct (T1 &&, T2 , T2 );
199+ template <class T1 , class T2 > void uninitialized_value_construct (T1 &&, T2 , T2 );
207200
208201// uninitialized_value_construct_n
209- template <class T1 , class T2 >
210- T1 uninitialized_value_construct_n (T1 , T2 );
202+ template <class T1 , class T2 > T1 uninitialized_value_construct_n (T1 , T2 );
211203
212204template <class T1 , class T2 , class T3 >
213- T2 uninitialized_value_construct_n (T1 &&, T2 , T3 );
205+ T2 uninitialized_value_construct_n (T1 &&, T2 , T3 );
214206
215207// uninitialized_copy
216- template <class T1 , class T2 >
217- T2 uninitialized_copy (T1 , T1 , T2 );
208+ template <class T1 , class T2 > T2 uninitialized_copy (T1 , T1 , T2 );
218209
219210template <class T1 , class T2 , class T3 >
220- T3 uninitialized_copy (T1 &&, T2 , T2 , T3 );
211+ T3 uninitialized_copy (T1 &&, T2 , T2 , T3 );
221212
222213// uninitialized_copy_n
223- template <class T1 , class T2 , class T3 >
224- T3 uninitialized_copy_n (T1 , T2 , T3 );
214+ template <class T1 , class T2 , class T3 > T3 uninitialized_copy_n (T1 , T2 , T3 );
225215
226216template <class T1 , class T2 , class T3 , class T4 >
227- T4 uninitialized_copy_n (T1 &&, T2 , T3 , T4 );
217+ T4 uninitialized_copy_n (T1 &&, T2 , T3 , T4 );
228218
229219// uninitialized_move
230- template <class T1 , class T2 >
231- T2 uninitialized_move (T1 , T1 , T2 );
220+ template <class T1 , class T2 > T2 uninitialized_move (T1 , T1 , T2 );
232221
233222template <class T1 , class T2 , class T3 >
234- T3 uninitialized_move (T1 &&, T2 , T2 , T3 );
223+ T3 uninitialized_move (T1 &&, T2 , T2 , T3 );
235224
236225// uninitialized_move_n
237226template <class T1 , class T2 , class T3 >
238227pair<T1 , T3 > uninitialized_move_n (T1 , T2 , T3 );
239228
240229template <class T1 , class T2 , class T3 , class T4 >
241- pair<T2 , T4 > uninitialized_move_n (T1 &&, T2 , T3 , T4 );
230+ pair<T2 , T4 > uninitialized_move_n (T1 &&, T2 , T3 , T4 );
242231
243232// uninitialized_fill
244- template <class T1 , class T2 >
245- void uninitialized_fill (T1 , T1 , const T2 &);
233+ template <class T1 , class T2 > void uninitialized_fill (T1 , T1 , const T2 &);
246234
247235template <class T1 , class T2 , class T3 >
248- void uninitialized_fill (T1 &&, T2 , T2 , const T3 &);
236+ void uninitialized_fill (T1 &&, T2 , T2 , const T3 &);
249237
250238// uninitialized_fill_n
251239template <class T1 , class T2 , class T3 >
252- T1 uninitialized_fill_n (T1 , T2 , const T3 &);
240+ T1 uninitialized_fill_n (T1 , T2 , const T3 &);
253241
254242template <class T1 , class T2 , class T3 , class T4 >
255- T2 uninitialized_fill_n (T1 &&, T2 , T3 , const T4 &);
243+ T2 uninitialized_fill_n (T1 &&, T2 , T3 , const T4 &);
256244
257245// destroy_at
258- template <class T1 >
259- void destroy_at (T1 *);
246+ template <class T1 > void destroy_at (T1 *);
260247
261248// destroy
262- template <class T1 >
263- void destroy (T1 , T1 );
249+ template <class T1 > void destroy (T1 , T1 );
264250
265- template <class T1 , class T2 >
266- void destroy (T1 &&, T2 , T2 );
251+ template <class T1 , class T2 > void destroy (T1 &&, T2 , T2 );
267252
268253// destroy_n
269- template <class T1 , class T2 >
270- T1 destroy_n (T1 , T2 );
254+ template <class T1 , class T2 > T1 destroy_n (T1 , T2 );
271255
272- template <class T1 , class T2 , class T3 >
273- T2 destroy_n (T1 &&, T2 , T3 );
256+ template <class T1 , class T2 , class T3 > T2 destroy_n (T1 &&, T2 , T3 );
274257
275258// launder
276- template <class T1 >
277- constexpr T1 * launder (T1 *) noexcept ;
259+ template <class T1 > constexpr T1 *launder (T1 *) noexcept ;
278260
279261// get_temporary_buffer / return_temporary_buffer (deprecated in C++17)
280262template <class T >
281263pair<T *, ptrdiff_t > get_temporary_buffer (ptrdiff_t n) noexcept ;
282264
283- template <class T >
284- void return_temporary_buffer (T *p);
265+ template <class T > void return_temporary_buffer (T *p);
285266
286267// raw_storage_iterator (deprecated in C++17)
287- template <class OutputIterator , class T >
288- class raw_storage_iterator {
268+ template <class OutputIterator , class T > class raw_storage_iterator {
289269public:
290270 using iterator_category = output_iterator_tag;
291271 using value_type = void ;
@@ -301,6 +281,16 @@ class raw_storage_iterator {
301281 OutputIterator base () const ;
302282};
303283
284+ template <typename T> class weak_ptr {
285+ public:
286+ weak_ptr ();
287+ weak_ptr (const weak_ptr &);
288+ weak_ptr (weak_ptr &&);
289+ weak_ptr (const shared_ptr<T> &);
290+ };
291+
292+ template <typename T, typename Alloc, typename ... Args>
293+ shared_ptr<T> allocate_shared (const Alloc &, Args &&...);
304294} // namespace std
305295
306296#endif // _GHLIBCPP_MEMORY
0 commit comments