25 #ifndef INCLUDED_BodyIdTypes_h_GUID_4FD241A3_25E9_42AF_F075_8EE8191C02F0
26 #define INCLUDED_BodyIdTypes_h_GUID_4FD241A3_25E9_42AF_F075_8EE8191C02F0
49 namespace typesafeid_traits {
51 template <>
struct WrappedType<vbtracker::detail::BodyIdTag> {
52 using type = std::uint16_t;
55 template <>
struct WrappedType<vbtracker::detail::TargetIdTag> {
56 using type = std::uint8_t;
67 using BodyTargetId = std::pair<BodyId, TargetId>;
70 template <
typename Stream>
71 inline Stream &operator<<(Stream &os, BodyTargetId
const &
id) {
72 os <<
id.first.value() <<
":" << int(
id.second.value());
80 struct hash<
osvr::vbtracker::BodyTargetId>
84 #endif // INCLUDED_BodyIdTypes_h_GUID_4FD241A3_25E9_42AF_F075_8EE8191C02F0
Header defining specializations of std::hash that forward to the contained integer type...
Explicitly specialize for your tag type if you want a different underlying type.