ty queue         template <typename GC>         struct EllenBinTreePQueue_pop_max         {             template <typename T, typename Tree>             bool operator()( T& dest, Tree& container ) const             {                 typename Tree::guarded_ptr gp( container.extract_max());                 if ( gp )                     dest = *gp;                 return !gp.empty();             }         };          template <typename RCU>         struct EllenBinTreePQueue_pop_max< cds::urcu::gc<RCU> >         {             template <typename T, typename Tree>             bool operator()( T& dest, Tree& container ) const             {                 typename Tree::exempt_ptr ep( container.extract_max());                 if ( ep )                     dest = *ep;                 return !ep.empty();             }         };          template <typename GC>         struct EllenBinTreePQueue_pop_min         {             template <typename T, typename Tree>             bool operator()( T& dest, Tree& container ) const             {                 typename Tree::guarded_ptr gp( container.extract_min());                 if ( gp )                     dest = *gp;                 return !gp.empty();             }         };          template <typename RCU>         struct EllenBinTreePQueue_pop_min< cds::urcu::gc<RCU> >         {             template <typename T, typename Tree>             bool operator()( T& dest, Tree& container ) const             {                 typename Tree::exempt_ptr ep( container.extract_min());                 if ( ep )                     dest = *ep;                 return !ep.empty();             }         };          template <typename GC, typename Key, typename T, typename Traits, bool Max = true>         class 