diff --git a/CMakeLists.txt b/CMakeLists.txt index b2b2cdb..a550e0c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,7 +11,7 @@ set(META_VERSION_MAJOR 0) set(META_VERSION_MINOR 0) set(META_VERSION_PATCH 1) set(META_VERSION_EXACT_SONAME ON) -set(META_CXX_STANDARD 20) +set(META_CXX_STANDARD 23) project(${META_PROJECT_NAME}) diff --git a/librepomgr/multisession.h b/librepomgr/multisession.h index 06331a8..1359790 100644 --- a/librepomgr/multisession.h +++ b/librepomgr/multisession.h @@ -14,7 +14,7 @@ namespace LibRepoMgr { template class MultiSession { public: using ContainerType = std::vector; - using HandlerType = std::function; + using HandlerType = std::move_only_function; using SharedPointerType = std::shared_ptr>; explicit MultiSession(boost::asio::io_context &ioContext, HandlerType &&handler); diff --git a/librepomgr/webapi/routes.cpp b/librepomgr/webapi/routes.cpp index 6577dff..5bdce59 100644 --- a/librepomgr/webapi/routes.cpp +++ b/librepomgr/webapi/routes.cpp @@ -324,24 +324,24 @@ void getPackages(const Params ¶ms, ResponseHandler &&handler) // retrieve packages from AUR auto log = LogContext(); auto handleAurResponse - = [handler{ std::move(handler) }, params{ std::move(params) }, document{ make_shared(std::move(document)) }, + = [handler{ std::move(handler) }, params{ std::move(params) }, document{ std::move(document) }, details](WebClient::AurQuerySession::ContainerType &&queriedAurPackages) mutable { auto aurPackageSearchResults = std::vector(); aurPackageSearchResults.reserve(queriedAurPackages.size()); auto configLock = params.setup.config.lockToRead(); - auto documentArray = document->GetArray(); + auto documentArray = document.GetArray(); if (details) { for (auto &[packageID, package] : queriedAurPackages) { - ReflectiveRapidJSON::JsonReflector::push(std::move(package), documentArray, document->GetAllocator()); + ReflectiveRapidJSON::JsonReflector::push(std::move(package), documentArray, document.GetAllocator()); } } else if (!queriedAurPackages.empty()) { for (auto &[packageID, package] : queriedAurPackages) { ReflectiveRapidJSON::JsonReflector::push( - PackageSearchResult{ params.setup.config.aur, std::move(package), packageID }, documentArray, document->GetAllocator()); + PackageSearchResult{ params.setup.config.aur, std::move(package), packageID }, documentArray, document.GetAllocator()); } } configLock.unlock(); - handler(makeJson(params.request(), *document, params.target.hasPrettyFlag())); + handler(makeJson(params.request(), document, params.target.hasPrettyFlag())); }; if (mode == Mode::Name) { WebClient::queryAurPackages(log, params.setup, neededAurPackages, params.setup.webServer.ioContext, std::move(handleAurResponse));