From 55dfa239ff41e817a244ed6a9de2081b7f4cfe63 Mon Sep 17 00:00:00 2001
From: Luca Boccassi <bluca@debian.org>
Date: Sun, 17 May 2020 14:23:19 +0100
Subject: [PATCH] Problem: build fails with Clang 10

Solution: wrap generic_mtrie_t in zmq namespace
---
 src/generic_mtrie_impl.hpp | 67 +++++++++++++++++++-------------------
 1 file changed, 34 insertions(+), 33 deletions(-)

diff --git a/src/generic_mtrie_impl.hpp b/src/generic_mtrie_impl.hpp
index 6faf984d..5e8ea431 100644
--- a/src/generic_mtrie_impl.hpp
+++ b/src/generic_mtrie_impl.hpp
@@ -40,8 +40,10 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #include "macros.hpp"
 #include "generic_mtrie.hpp"
 
+namespace zmq
+{
 template <typename T>
-zmq::generic_mtrie_t<T>::generic_mtrie_t () :
+generic_mtrie_t<T>::generic_mtrie_t () :
     _pipes (0),
     _min (0),
     _count (0),
@@ -49,7 +51,7 @@ zmq::generic_mtrie_t<T>::generic_mtrie_t () :
 {
 }
 
-template <typename T> zmq::generic_mtrie_t<T>::~generic_mtrie_t ()
+template <typename T> generic_mtrie_t<T>::~generic_mtrie_t ()
 {
     LIBZMQ_DELETE (_pipes);
 
@@ -65,17 +67,15 @@ template <typename T> zmq::generic_mtrie_t<T>::~generic_mtrie_t ()
 }
 
 template <typename T>
-bool zmq::generic_mtrie_t<T>::add (prefix_t prefix_,
-                                   size_t size_,
-                                   value_t *pipe_)
+bool generic_mtrie_t<T>::add (prefix_t prefix_, size_t size_, value_t *pipe_)
 {
     return add_helper (prefix_, size_, pipe_);
 }
 
 template <typename T>
-bool zmq::generic_mtrie_t<T>::add_helper (prefix_t prefix_,
-                                          size_t size_,
-                                          value_t *pipe_)
+bool generic_mtrie_t<T>::add_helper (prefix_t prefix_,
+                                     size_t size_,
+                                     value_t *pipe_)
 {
     //  We are at the node corresponding to the prefix. We are done.
     if (!size_) {
@@ -151,12 +151,12 @@ bool zmq::generic_mtrie_t<T>::add_helper (prefix_t prefix_,
 
 template <typename T>
 template <typename Arg>
-void zmq::generic_mtrie_t<T>::rm (value_t *pipe_,
-                                  void (*func_) (prefix_t data_,
-                                                 size_t size_,
-                                                 Arg arg_),
-                                  Arg arg_,
-                                  bool call_on_uniq_)
+void generic_mtrie_t<T>::rm (value_t *pipe_,
+                             void (*func_) (prefix_t data_,
+                                            size_t size_,
+                                            Arg arg_),
+                             Arg arg_,
+                             bool call_on_uniq_)
 {
     unsigned char *buff = NULL;
     rm_helper (pipe_, &buff, 0, 0, func_, arg_, call_on_uniq_);
@@ -165,15 +165,15 @@ void zmq::generic_mtrie_t<T>::rm (value_t *pipe_,
 
 template <typename T>
 template <typename Arg>
-void zmq::generic_mtrie_t<T>::rm_helper (value_t *pipe_,
-                                         unsigned char **buff_,
-                                         size_t buffsize_,
-                                         size_t maxbuffsize_,
-                                         void (*func_) (prefix_t data_,
-                                                        size_t size_,
-                                                        Arg arg_),
-                                         Arg arg_,
-                                         bool call_on_uniq_)
+void generic_mtrie_t<T>::rm_helper (value_t *pipe_,
+                                    unsigned char **buff_,
+                                    size_t buffsize_,
+                                    size_t maxbuffsize_,
+                                    void (*func_) (prefix_t data_,
+                                                   size_t size_,
+                                                   Arg arg_),
+                                    Arg arg_,
+                                    bool call_on_uniq_)
 {
     //  Remove the subscription from this node.
     if (_pipes && _pipes->erase (pipe_)) {
@@ -223,7 +223,7 @@ void zmq::generic_mtrie_t<T>::rm_helper (value_t *pipe_,
 
 template <typename T>
 template <typename Arg>
-void zmq::generic_mtrie_t<T>::rm_helper_multiple_subnodes (
+void generic_mtrie_t<T>::rm_helper_multiple_subnodes (
   unsigned char **buff_,
   size_t buffsize_,
   size_t maxbuffsize_,
@@ -315,15 +315,15 @@ void zmq::generic_mtrie_t<T>::rm_helper_multiple_subnodes (
     }
 }
 template <typename T>
-typename zmq::generic_mtrie_t<T>::rm_result
-zmq::generic_mtrie_t<T>::rm (prefix_t prefix_, size_t size_, value_t *pipe_)
+typename generic_mtrie_t<T>::rm_result
+generic_mtrie_t<T>::rm (prefix_t prefix_, size_t size_, value_t *pipe_)
 {
     return rm_helper (prefix_, size_, pipe_);
 }
 
 template <typename T>
-typename zmq::generic_mtrie_t<T>::rm_result zmq::generic_mtrie_t<T>::rm_helper (
-  prefix_t prefix_, size_t size_, value_t *pipe_)
+typename generic_mtrie_t<T>::rm_result
+generic_mtrie_t<T>::rm_helper (prefix_t prefix_, size_t size_, value_t *pipe_)
 {
     if (!size_) {
         if (!_pipes)
@@ -422,10 +422,10 @@ typename zmq::generic_mtrie_t<T>::rm_result zmq::generic_mtrie_t<T>::rm_helper (
 
 template <typename T>
 template <typename Arg>
-void zmq::generic_mtrie_t<T>::match (prefix_t data_,
-                                     size_t size_,
-                                     void (*func_) (value_t *pipe_, Arg arg_),
-                                     Arg arg_)
+void generic_mtrie_t<T>::match (prefix_t data_,
+                                size_t size_,
+                                void (*func_) (value_t *pipe_, Arg arg_),
+                                Arg arg_)
 {
     for (generic_mtrie_t *current = this; current; data_++, size_--) {
         //  Signal the pipes attached to this node.
@@ -462,10 +462,11 @@ void zmq::generic_mtrie_t<T>::match (prefix_t data_,
     }
 }
 
-template <typename T> bool zmq::generic_mtrie_t<T>::is_redundant () const
+template <typename T> bool generic_mtrie_t<T>::is_redundant () const
 {
     return !_pipes && _live_nodes == 0;
 }
+}
 
 
 #endif