--- /dev/null
+#ifndef __NEST_DOMAIN_ID_H__
+#define __NEST_DOMAIN_ID_H__
+
+#include <cstdint>
+
+namespace nest
+{
+
+class DomainID
+{
+public:
+ DomainID();
+
+public:
+ explicit DomainID(uint32_t value) : _value{value}
+ {
+ // DO NOTHING
+ }
+
+public:
+ DomainID(const DomainID &vid) : _value{vid._value}
+ {
+ // DO NOTHING
+ }
+
+public:
+ uint32_t value(void) const { return _value; }
+
+private:
+ uint32_t _value;
+};
+
+bool operator==(const DomainID &lhs, const DomainID &rhs);
+bool operator<(const DomainID &lhs, const DomainID &rhs);
+
+} // namespace nest
+
+#endif // __NEST_DOMAIN_ID_H__
--- /dev/null
+#include "nest/DomainID.h"
+
+namespace nest
+{
+
+DomainID::DomainID() : _value{0xffffffff}
+{
+ // DO NOTHING
+}
+
+bool operator==(const DomainID &lhs, const DomainID &rhs) { return lhs.value() == rhs.value(); }
+bool operator<(const DomainID &lhs, const DomainID &rhs) { return lhs.value() < rhs.value(); }
+
+} // namespace nest
--- /dev/null
+#include "nest/DomainID.h"
+
+#include <gtest/gtest.h>
+
+TEST(DOMAIN_ID, ctor)
+{
+ nest::DomainID id{0};
+
+ ASSERT_EQ(id.value(), 0);
+}
+
+TEST(DOMAIN_ID, operator_eq)
+{
+ ASSERT_TRUE(nest::DomainID(0) == nest::DomainID(0));
+ ASSERT_FALSE(nest::DomainID(0) == nest::DomainID(1));
+}
+
+TEST(DOMAIN_ID, operator_lt)
+{
+ ASSERT_TRUE(nest::DomainID(0) < nest::DomainID(1));
+ ASSERT_FALSE(nest::DomainID(1) < nest::DomainID(0));
+}