28 template<std::
integral T>
35 UID() : value_{allocate_next_id()}
38 constexpr UID(
UID&&) noexcept = default;
39 constexpr
UID& operator=(const
UID&) = default;
40 constexpr
UID& operator=(
UID&&) noexcept = default;
41 ~
UID() noexcept = default;
45 value_ = allocate_next_id();
53 explicit constexpr operator bool()
const
61 static constinit std::atomic<element_type> g_next_available_id;
65 return g_next_available_id.fetch_add(1, std::memory_order_relaxed);
81struct std::hash<
osc::UID> final {
84 return static_cast<size_t>(
id.get());
constexpr element_type get() const
Definition uid.h:48
static constexpr UID empty()
Definition uid.h:23
static constexpr UID invalid()
Definition uid.h:18
static constexpr UID from_int_unchecked(T i)
Definition uid.h:30
void reset()
Definition uid.h:43
constexpr UID(UID &&) noexcept=default
friend auto operator<=>(const UID &, const UID &)=default
intptr_t element_type
Definition uid.h:16
constexpr UID(const UID &)=default
Definition custom_decoration_generator.h:5
std::ostream & operator<<(std::ostream &, const Object &)
size_t operator()(const osc::UID &id) const noexcept
Definition uid.h:82