A number of small improvements can be made to this struct.
- Remove const members and move them into `private` fields (this forces copy-on-move as it cannot bind T&&)
- Replace `std::set` with `absl::flat_hash_set`
- Add default values to primitive member functions
Changes may provide small performance benefits.