diff --git a/qsbr.hpp b/qsbr.hpp index 27ad377c..cba1fd80 100644 --- a/qsbr.hpp +++ b/qsbr.hpp @@ -1591,9 +1591,13 @@ class [[nodiscard]] qsbr_thread : public std::thread { auto new_qsbr_per_thread = std::make_unique(); return std::thread{ [inner_new_qsbr_per_thread = std::move(new_qsbr_per_thread)]( - auto &&f2, auto &&...args2) mutable noexcept(noexcept(f2)) { + auto &&f2, + auto + &&...a2) mutable noexcept(noexcept(f2(std:: + forward( + a2)...))) { qsbr_per_thread::set_instance(std::move(inner_new_qsbr_per_thread)); - f2(std::forward(args2)...); + f2(std::forward(a2)...); }, std::forward(f), std::forward(args)...}; } diff --git a/test/qsbr_gtest_utils.hpp b/test/qsbr_gtest_utils.hpp index 08cdcda4..467d2e23 100644 --- a/test/qsbr_gtest_utils.hpp +++ b/test/qsbr_gtest_utils.hpp @@ -56,7 +56,11 @@ class QSBRTestBase : public ::testing::Test { []() noexcept { return unodb::this_thread().is_qsbr_paused(); }); } - static void qsbr_pause() { + static void qsbr_pause() +#ifndef UNODB_DETAIL_WITH_STATS + noexcept +#endif + { unodb::test::must_not_allocate([]() #ifndef UNODB_DETAIL_WITH_STATS noexcept diff --git a/test/test_qsbr.cpp b/test/test_qsbr.cpp index 03d0a46c..5e99f364 100644 --- a/test/test_qsbr.cpp +++ b/test/test_qsbr.cpp @@ -58,7 +58,11 @@ UNODB_TEST_F(QSBR, TwoThreads) { } UNODB_TEST_F(QSBR, TwoThreadsSecondQuitPaused) { - unodb::qsbr_thread second_thread([] { qsbr_pause(); }); + unodb::qsbr_thread second_thread([]() +#ifndef UNODB_DETAIL_WITH_STATS + noexcept +#endif + { qsbr_pause(); }); join(second_thread); }