summaryrefslogtreecommitdiffstats
path: root/src/httpserver/qhttpserver.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/httpserver/qhttpserver.h')
-rw-r--r--src/httpserver/qhttpserver.h16
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>