I'd like to determine the hook type of an intrusive container (intrusive::list):

template< typename List >
void do_link( List & lst) {
   static_assert(std::is_same< typename List::???, my_hook_type >::value);
   lst.push_back( * this);
}