40 constexpr
UUID() noexcept : data_({}) {}
44 std::copy(std::cbegin(arr), std::cend(arr), std::begin(data_));
48 explicit UUID(
char (&arr)[16]) noexcept {
50 std::cbegin(arr), std::cend(arr), std::begin(data_), [](
char c) ->
value_type {
55 void swap(
UUID& other) noexcept { data_.swap(other.data_); }
58 constexpr
value_type* data() noexcept {
return data_.data(); }
59 constexpr
const value_type* data()
const noexcept {
return data_.data(); }
62 friend std::ostream&
operator<< (std::ostream& s,
const UUID&
id) {
65 s << std::hex << std::setfill(
'0')
66 << std::setw(2) << +
id.data_[0]
67 << std::setw(2) << +
id.data_[1]
68 << std::setw(2) << +
id.data_[2]
69 << std::setw(2) << +
id.data_[3]
71 << std::setw(2) << +
id.data_[4]
72 << std::setw(2) << +
id.data_[5]
74 << std::setw(2) << +
id.data_[6]
75 << std::setw(2) << +
id.data_[7]
77 << std::setw(2) << +
id.data_[8]
78 << std::setw(2) << +
id.data_[9]
80 << std::setw(2) << +
id.data_[10]
81 << std::setw(2) << +
id.data_[11]
82 << std::setw(2) << +
id.data_[12]
83 << std::setw(2) << +
id.data_[13]
84 << std::setw(2) << +
id.data_[14]
85 << std::setw(2) << +
id.data_[15]
86 << std::setfill(
fill);
93 std::array<value_type, 16> data_;
100 return lhs.data_ == rhs.data_;
104 return !(lhs == rhs);
108 return lhs.data_ < rhs.data_;
112 std::stringstream ss;
bool operator!=(const UUID &lhs, const UUID &rhs) noexcept
std::ostream & operator<<(std::ostream &os, const SessionInfo &session_info)
constexpr UUID() noexcept
std::string to_string(const UUID &uuid)
bool operator==(const UUID &lhs, const UUID &rhs) noexcept
DEVICE void fill(ARGS &&...args)
DEVICE auto copy(ARGS &&...args)
constexpr UUID empty_uuid
friend bool operator==(const UUID &lhs, const UUID &rhs) noexcept
friend bool operator<(const UUID &lhs, const UUID &rhs) noexcept
bool operator<(const UUID &lhs, const UUID &rhs) noexcept
DEVICE void swap(ARGS &&...args)