Fix virtual overloads
authorManuel Nickschas <sputnick@quassel-irc.org>
Wed, 6 Mar 2013 23:52:06 +0000 (00:52 +0100)
committerManuel Nickschas <sputnick@quassel-irc.org>
Wed, 6 Mar 2013 23:52:06 +0000 (00:52 +0100)
So I learned something today: the 'using' keyword can also be used to
import function names from the enclosing namespace. This not only
solves the spammy virtual overload warnings that the new-fangled protocol
stuff introduced unwittingly, but also removes the need to redefine
RemotePeer::handle<>() as a forward to Peer::handle<>().

Also, someone please kick the C++ inventors for making method lookup
not follow the Koenig rules (contrary to most other lookups...).

src/common/remotepeer.h

index 5751dfb..6c3e35f 100644 (file)
@@ -68,8 +68,8 @@ signals:
 protected:
     SignalProxy *signalProxy() const;
 
-    template<class T>
-    void handle(const T &protoMessage);
+    using Peer::handle;
+    using Peer::dispatch;
 
     // These protocol messages get handled internally and won't reach SignalProxy
     void handle(const Protocol::HeartBeat &heartBeat);
@@ -89,12 +89,4 @@ private:
     int _lag;
 };
 
-
-template<class T> inline
-void RemotePeer::handle(const T &protoMessage)
-{
-    Peer::handle(protoMessage);
-}
-
-
 #endif