11template <
typename Type>
13 inline static std::uint64_t sNextFreeIndex = 0;
20 if (
value !=
nullptr) {
75 return static_cast<Type*
>(
GetImpl(this->_i));
79 return Get() !=
nullptr;
92template <
typename T,
typename U>
94 return lhs.Get() ==
rhs.Get();
97template <
typename T,
typename U>
99 return lhs.Get() !=
rhs.Get();
102template <
typename T,
typename U>
107template <
typename T,
typename U>
112template <
typename T,
typename U>
117template <
typename T,
typename U>
124 return lhs.Get() ==
nullptr;
129 return rhs.Get() ==
nullptr;
134 return lhs.Get() !=
nullptr;
139 return rhs.Get() !=
nullptr;
142template <
typename T,
typename U>
144 return lhs.Get() <
rhs.Get();
147template <
typename T,
typename U>
149 return lhs.Get() >
rhs.Get();
152template <
typename T,
typename U>
157template <
typename T,
typename U>
162template <
typename T,
typename U>
167template <
typename T,
typename U>
174 return lhs.Get() <
nullptr;
179 return nullptr <
rhs.Get();
184 return lhs.Get() >
nullptr;
189 return nullptr >
rhs.Get();
192template <
typename T,
typename U>
194 return lhs.Get() >=
rhs.Get();
197template <
typename T,
typename U>
199 return lhs.Get() <=
rhs.Get();
202template <
typename T,
typename U>
207template <
typename T,
typename U>
212template <
typename T,
typename U>
217template <
typename T,
typename U>
224 return lhs.Get() <=
nullptr;
229 return nullptr <=
rhs.Get();
234 return lhs.Get() >=
nullptr;
239 return nullptr >=
rhs.Get();
ThreadLocalPtrProxy() noexcept
ThreadLocalPtrProxy & operator=(const ThreadLocalPtrProxy &other) noexcept
ThreadLocalPtrProxy & operator=(Type *value) noexcept
Type & operator*() const noexcept
Type * Get() const noexcept
Type & operator[](std::size_t i) const
Type * operator->() const noexcept
ThreadLocalPtrProxy(const ThreadLocalPtrProxy &other) noexcept
ThreadLocalPtrProxy(const ThreadLocalPtrProxy< U > &other) noexcept
ThreadLocalPtrProxy & operator=(const ThreadLocalPtrProxy< U > &other) noexcept
ThreadLocalPtrProxy(ThreadLocalPtrProxy &&other) noexcept
ThreadLocalPtrProxy(ThreadLocalPtrProxy< U > &&other) noexcept
ThreadLocalPtrProxy & operator=(ThreadLocalPtrProxy &&other) noexcept
ThreadLocalPtrProxy(Type *value) noexcept
ThreadLocalPtrProxy & operator=(ThreadLocalPtrProxy< U > &&other) noexcept
bool operator<(const ThreadLocalPtrProxy< T > &lhs, const ThreadLocalPtrProxy< U > &rhs) noexcept
void SetDefault(void *new_value, std::uint64_t i)
bool operator>=(const ThreadLocalPtrProxy< T > &lhs, const ThreadLocalPtrProxy< U > &rhs) noexcept
void * GetImpl(std::uint64_t i)
bool operator>(const ThreadLocalPtrProxy< T > &lhs, const ThreadLocalPtrProxy< U > &rhs) noexcept
bool operator==(const ThreadLocalPtrProxy< T > &lhs, const ThreadLocalPtrProxy< U > &rhs) noexcept
bool operator<=(const ThreadLocalPtrProxy< T > &lhs, const ThreadLocalPtrProxy< U > &rhs) noexcept
void Set(void *new_value, std::uint64_t i)
bool operator!=(const ThreadLocalPtrProxy< T > &lhs, const ThreadLocalPtrProxy< U > &rhs) noexcept
Contract< V, E > MakeContract()
Creates related future and promise.