85 template<typename T, HALCHECK_REQUIRE(!std::is_same<T, void>())>
87 static const type_id output(next());
98 template<typename T, HALCHECK_REQUIRE(std::is_same<T, void>())>
108 friend bool operator==(
const type_id &lhs,
const type_id &rhs) {
return lhs._index == rhs._index; }
109 friend bool operator!=(
const type_id &lhs,
const type_id &rhs) {
return lhs._index != rhs._index; }
110 friend bool operator<(
const type_id &lhs,
const type_id &rhs) {
return lhs._index < rhs._index; }
111 friend bool operator>(
const type_id &lhs,
const type_id &rhs) {
return lhs._index > rhs._index; }
112 friend bool operator<=(
const type_id &lhs,
const type_id &rhs) {
return lhs._index <= rhs._index; }
113 friend bool operator>=(
const type_id &lhs,
const type_id &rhs) {
return lhs._index >= rhs._index; }