216 lines · plain
1// -*- C++ -*-2//===----------------------------------------------------------------------===//3//4// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.5// See https://llvm.org/LICENSE.txt for license information.6// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception7//8//===----------------------------------------------------------------------===//9 10export namespace std {11 // [pointer.traits], pointer traits12 using std::pointer_traits;13 14 // [pointer.conversion], pointer conversion15 using std::to_address;16 17 // [ptr.align], pointer alignment18 using std::align;19 using std::assume_aligned;20#if _LIBCPP_STD_VER >= 2621 using std::is_sufficiently_aligned;22#endif23 24 // [obj.lifetime], explicit lifetime management25 // using std::start_lifetime_as;26 // using std::start_lifetime_as_array;27 28 // [allocator.tag], allocator argument tag29 using std::allocator_arg;30 using std::allocator_arg_t;31 32 // [allocator.uses], uses_allocator33 using std::uses_allocator;34 35 // [allocator.uses.trait], uses_allocator36 using std::uses_allocator_v;37 38 // [allocator.uses.construction], uses-allocator construction39 using std::uses_allocator_construction_args;40 41 using std::make_obj_using_allocator;42 using std::uninitialized_construct_using_allocator;43 44 // [allocator.traits], allocator traits45 using std::allocator_traits;46 47#if _LIBCPP_STD_VER >= 2348 using std::allocation_result;49#endif50 51 // [default.allocator], the default allocator52 using std::allocator;53 using std::operator==;54 55 // [specialized.addressof], addressof56 using std::addressof;57 58 // [specialized.algorithms], specialized algorithms59 // [special.mem.concepts], special memory concepts60 61 using std::uninitialized_default_construct;62 using std::uninitialized_default_construct_n;63 64 namespace ranges {65 using std::ranges::uninitialized_default_construct;66 using std::ranges::uninitialized_default_construct_n;67 } // namespace ranges68 69 using std::uninitialized_value_construct;70 using std::uninitialized_value_construct_n;71 72 namespace ranges {73 using std::ranges::uninitialized_value_construct;74 using std::ranges::uninitialized_value_construct_n;75 } // namespace ranges76 77 using std::uninitialized_copy;78 using std::uninitialized_copy_n;79 80 namespace ranges {81 using std::ranges::uninitialized_copy;82 using std::ranges::uninitialized_copy_result;83 84 using std::ranges::uninitialized_copy_n;85 using std::ranges::uninitialized_copy_n_result;86 } // namespace ranges87 88 using std::uninitialized_move;89 using std::uninitialized_move_n;90 91 namespace ranges {92 using std::ranges::uninitialized_move;93 using std::ranges::uninitialized_move_result;94 95 using std::ranges::uninitialized_move_n;96 using std::ranges::uninitialized_move_n_result;97 } // namespace ranges98 99 using std::uninitialized_fill;100 using std::uninitialized_fill_n;101 102 namespace ranges {103 using std::ranges::uninitialized_fill;104 using std::ranges::uninitialized_fill_n;105 } // namespace ranges106 107 // [specialized.construct], construct_at108 using std::construct_at;109 110 namespace ranges {111 using std::ranges::construct_at;112 }113 // [specialized.destroy], destroy114 using std::destroy;115 using std::destroy_at;116 using std::destroy_n;117 118 namespace ranges {119 using std::ranges::destroy;120 using std::ranges::destroy_at;121 using std::ranges::destroy_n;122 } // namespace ranges123 124 // [unique.ptr], class template unique_ptr125 using std::default_delete;126 using std::unique_ptr;127 128 using std::make_unique;129 using std::make_unique_for_overwrite;130 131 using std::operator<;132 using std::operator>;133 using std::operator<=;134 using std::operator>=;135 using std::operator<=>;136 137 using std::operator<<;138 139 // [util.smartptr.weak.bad], class bad_weak_ptr140 using std::bad_weak_ptr;141 142 // [util.smartptr.shared], class template shared_ptr143 using std::shared_ptr;144 145 // [util.smartptr.shared.create], shared_ptr creation146 using std::allocate_shared;147 using std::allocate_shared_for_overwrite;148 using std::make_shared;149 using std::make_shared_for_overwrite;150 151 // [util.smartptr.shared.spec], shared_ptr specialized algorithms152 using std::swap;153 154 // [util.smartptr.shared.cast], shared_ptr casts155 using std::const_pointer_cast;156 using std::dynamic_pointer_cast;157 using std::reinterpret_pointer_cast;158 using std::static_pointer_cast;159 160#if _LIBCPP_HAS_RTTI161 using std::get_deleter;162#endif // _LIBCPP_HAS_RTTI163 164 // [util.smartptr.shared.io], shared_ptr I/O165 166 // [util.smartptr.weak], class template weak_ptr167 using std::weak_ptr;168 169 // [util.smartptr.weak.spec], weak_ptr specialized algorithms170 171 // [util.smartptr.ownerless], class template owner_less172 using std::owner_less;173 174 // [util.smartptr.enab], class template enable_shared_from_this175 using std::enable_shared_from_this;176 177 // [util.smartptr.hash], hash support178 using std::hash;179 180 // [util.smartptr.atomic], atomic smart pointers181 // using std::atomic;182 183#if _LIBCPP_STD_VER >= 23184 // [out.ptr.t], class template out_ptr_t185 using std::out_ptr_t;186 187 // [out.ptr], function template out_ptr188 using std::out_ptr;189 190 // [inout.ptr.t], class template inout_ptr_t191 using std::inout_ptr_t;192 193 // [inout.ptr], function template inout_ptr194 using std::inout_ptr;195#endif // _LIBCPP_STD_VER >= 23196 197#if _LIBCPP_HAS_THREADS198 // [depr.util.smartptr.shared.atomic]199 using std::atomic_is_lock_free;200 201 using std::atomic_load;202 using std::atomic_load_explicit;203 204 using std::atomic_store;205 using std::atomic_store_explicit;206 207 using std::atomic_exchange;208 using std::atomic_exchange_explicit;209 210 using std::atomic_compare_exchange_strong;211 using std::atomic_compare_exchange_strong_explicit;212 using std::atomic_compare_exchange_weak;213 using std::atomic_compare_exchange_weak_explicit;214#endif // _LIBCPP_HAS_THREADS215} // namespace std216