I need to hash a combination of four different things, comprising 20 bytes, as such I defined this:

```
struct holder
{
  char a;
  uint16_t b;
  uint64_t c;
  char d[9];
} __attribute((__packed__));

```

and then I can load one of the above and pass it to a hash function. So then I want my class `Foo` to have a `std::tr1::unordered_map<holder, int> map`. but in order to declare that in the header file for `Foo`, I need to include the definition of `holder`, the template specialization inside `std::tr1` for `hash` for my type, and as a result the full hash function. Is there a way to not have all this code up in the header but still give my class this hashmap?