17 inline constexpr std::size_t
invalid_row = std::numeric_limits<std::size_t>::max();
51 [[nodiscard]]
explicit operator bool()
const {
93 return os <<
"row=" << *
id.m_ptr;
106 return !(lhs ==
rhs);
119 template <
typename,
typename...>
121 friend struct std::hash<non_owning_identifier_without_container>;
130 :
m_ptr(std::make_shared<size_t>(
row)) {}
133 std::shared_ptr<std::size_t>
m_ptr{};
140 return reinterpret_cast<std::size_t
>(h.m_ptr.get());
void move(Item *q1, Item *q2, Item *q3)
constexpr std::size_t invalid_row
Struct used to index SoAoS data, such as array range variables.
A non-owning permutation-stable identifier for an entry in a container.
bool was_once_valid() const
Did the identifier use to refer to a valid entry?
void set_current_row(std::size_t row)
friend bool operator<(non_owning_identifier_without_container lhs, non_owning_identifier_without_container rhs)
friend bool operator==(non_owning_identifier_without_container lhs, non_owning_identifier_without_container rhs)
Test if two handles are both null or refer to the same valid row.
~non_owning_identifier_without_container()=default
non_owning_identifier_without_container & operator=(const non_owning_identifier_without_container &)=default
friend bool operator!=(non_owning_identifier_without_container lhs, non_owning_identifier_without_container rhs)
non_owning_identifier_without_container(size_t row)
non_owning_identifier_without_container(non_owning_identifier_without_container &&other)=default
friend std::ostream & operator<<(std::ostream &os, non_owning_identifier_without_container const &id)
non_owning_identifier_without_container & operator=(non_owning_identifier_without_container &&)=default
std::shared_ptr< std::size_t > m_ptr
non_owning_identifier_without_container()=default
Create a null identifier.
bool has_always_been_null() const
Has the identifier always been null.
non_owning_identifier_without_container(std::shared_ptr< std::size_t > ptr)
non_owning_identifier_without_container(const non_owning_identifier_without_container &other)=default
std::size_t current_row() const
What is the current row?
An owning permutation-stable identifier for a entry in a container.
std::size_t operator()(neuron::container::non_owning_identifier_without_container const &h) noexcept