diff options
Diffstat (limited to 'src/httpserver/qhttpserver.h')
-rw-r--r-- | src/httpserver/qhttpserver.h | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/httpserver/qhttpserver.h b/src/httpserver/qhttpserver.h index 7f61a2a..885c150 100644 --- a/src/httpserver/qhttpserver.h +++ b/src/httpserver/qhttpserver.h @@ -88,15 +88,17 @@ private: template<typename Rule, typename ViewHandler, typename ViewTraits, typename ... Args> bool routeImpl(Args &&...args, ViewHandler &&viewHandler) { - return router()->addRule<ViewHandler, ViewTraits>( - new Rule(std::forward<Args>(args)..., [this, &viewHandler] ( - QRegularExpressionMatch &match, - const QHttpServerRequest &request, - QTcpSocket *socket) { + auto routerHandler = [this, viewHandler] ( + QRegularExpressionMatch &match, + const QHttpServerRequest &request, + QTcpSocket *socket) mutable { auto boundViewHandler = router()->bindCaptured<ViewHandler, ViewTraits>( - std::forward<ViewHandler>(viewHandler), match); + std::move(viewHandler), match); responseImpl<ViewTraits>(boundViewHandler, request, socket); - })); + }; + + return router()->addRule<ViewHandler, ViewTraits>( + new Rule(std::forward<Args>(args)..., std::move(routerHandler))); } template<typename ViewTraits, typename T> |