11struct MemberHook final {
 
   13  auto& operator()(T& node) 
const noexcept {
 
   18template <
typename HookExtractor1, 
typename HookExtractor2>
 
   19struct CombinedHook final {
 
   20  static_assert(std::is_empty_v<HookExtractor1>);
 
   21  static_assert(std::is_empty_v<HookExtractor2>);
 
   24  auto& operator()(T& node) 
const noexcept {
 
   25    return HookExtractor2{}(HookExtractor1{}(node));
 
   30class SinglyLinkedHook final {
 
   32  SinglyLinkedHook() = 
default;
 
   35  template <
typename U, 
typename HookExtractor>
 
   36  friend class IntrusiveStack;
 
   38  friend class IntrusiveMpscQueueImpl;
 
   40  std::atomic<T*> next_{
nullptr};
 
   44struct IntrusiveWalkablePoolHook final {
 
   45  SinglyLinkedHook<T> permanent_list_hook;
 
   46  SinglyLinkedHook<T> free_list_hook;
 
   50class SinglyLinkedBaseHook {
 
   52  SinglyLinkedHook<SinglyLinkedBaseHook> singly_linked_hook;