#pragma once namespace saw { template class id { private: using type = uint64_t; type value_; public: id(type val): value_{val} {} SAW_DEFAULT_COPY(id); SAW_DEFAULT_MOVE(id); bool operator==(const id& rhs) const { return value_ == rhs.value_; } bool operator!=(const id& rhs) const { return !(*this == rhs); } type get_value() const { return value_; } }; }