From 0ff2d4e04276b481290da87b4224056b5a2fde02 Mon Sep 17 00:00:00 2001 From: Klemens Morgenstern Date: Wed, 18 Oct 2023 10:09:08 +0800 Subject: [PATCH] msvc warning fixes. --- include/boost/cobalt/detail/util.hpp | 10 +++++++--- include/boost/cobalt/this_coro.hpp | 12 ++++++------ test/gather.cpp | 5 +++-- test/join.cpp | 5 +++-- test/left_race.cpp | 5 +++-- test/race.cpp | 12 +++++++----- test/wait_group.cpp | 2 +- 7 files changed, 30 insertions(+), 21 deletions(-) diff --git a/include/boost/cobalt/detail/util.hpp b/include/boost/cobalt/detail/util.hpp index 38393cdc..fac0d284 100644 --- a/include/boost/cobalt/detail/util.hpp +++ b/include/boost/cobalt/detail/util.hpp @@ -121,9 +121,12 @@ auto get_resume_result(Awaitable & aw) -> system::result h, const cobalt::executor & exec) noexcept; + +BOOST_COBALT_DECL +void self_destroy(std::coroutine_handle h, const cobalt::executor & exec) noexcept; + template -BOOST_COBALT_DECL void self_destroy(std::coroutine_handle h) noexcept +inline void self_destroy(std::coroutine_handle h) noexcept { if constexpr (requires {h.promise().get_executor();}) self_destroy(h, h.promise().get_executor()); @@ -131,8 +134,8 @@ BOOST_COBALT_DECL void self_destroy(std::coroutine_handle h) noexcept self_destroy(h, this_thread::get_executor()); } - #else + template inline void self_destroy(std::coroutine_handle h) noexcept { @@ -144,6 +147,7 @@ inline void self_destroy(std::coroutine_handle h, const Executor &) noexcept { h.destroy(); } + #endif template diff --git a/include/boost/cobalt/this_coro.hpp b/include/boost/cobalt/this_coro.hpp index 1e3e4b83..32f2b4ef 100644 --- a/include/boost/cobalt/this_coro.hpp +++ b/include/boost/cobalt/this_coro.hpp @@ -363,9 +363,9 @@ void *allocate_coroutine(const std::size_t size, AllocatorType alloc_) using alloc_type = typename std::allocator_traits::template rebind_alloc; alloc_type alloc{alloc_}; - const auto align_needed = size % alignof(alloc_type); - const auto align_offset = align_needed != 0 ? alignof(alloc_type) - align_needed : 0ull; - const auto alloc_size = size + sizeof(alloc_type) + align_offset; + const std::size_t align_needed = size % alignof(alloc_type); + const std::size_t align_offset = align_needed != 0 ? alignof(alloc_type) - align_needed : 0ull; + const std::size_t alloc_size = size + sizeof(alloc_type) + align_offset; const auto raw = std::allocator_traits::allocate(alloc, alloc_size); new(raw + size + align_offset) alloc_type(std::move(alloc)); @@ -379,9 +379,9 @@ void deallocate_coroutine(void *raw_, const std::size_t size) using alloc_type = typename std::allocator_traits::template rebind_alloc; const auto raw = static_cast(raw_); - const auto align_needed = size % alignof(alloc_type); - const auto align_offset = align_needed != 0 ? alignof(alloc_type) - align_needed : 0ull; - const auto alloc_size = size + sizeof(alloc_type) + align_offset; + const std::size_t align_needed = size % alignof(alloc_type); + const std::size_t align_offset = align_needed != 0 ? alignof(alloc_type) - align_needed : 0ull; + const std::size_t alloc_size = size + sizeof(alloc_type) + align_offset; auto alloc_p = reinterpret_cast(raw + size + align_offset); auto alloc = std::move(*alloc_p); diff --git a/test/gather.cpp b/test/gather.cpp index cca75002..5bc9d6ee 100644 --- a/test/gather.cpp +++ b/test/gather.cpp @@ -17,7 +17,8 @@ using namespace boost; -static cobalt::promise wdummy(asio::any_io_executor exec, +static cobalt::promise wdummy( + asio::any_io_executor exec, std::chrono::milliseconds ms = std::chrono::milliseconds(25)) { if (ms == std::chrono::milliseconds ::max()) @@ -74,7 +75,7 @@ CO_TEST_CASE("variadic") CO_TEST_CASE("list") { auto exec = co_await asio::this_coro::executor; - std::vector> vec; + std::vector> vec; vec.push_back(wdummy(exec, std::chrono::milliseconds(100))); vec.push_back(wdummy(exec, std::chrono::milliseconds( 50))); vec.push_back(wdummy(exec, std::chrono::milliseconds(150))); diff --git a/test/join.cpp b/test/join.cpp index 5fcbc787..e7a53400 100644 --- a/test/join.cpp +++ b/test/join.cpp @@ -17,7 +17,8 @@ using namespace boost; -static cobalt::promise wdummy(asio::any_io_executor exec, +static cobalt::promise wdummy( + asio::any_io_executor exec, std::chrono::milliseconds ms = std::chrono::milliseconds(25)) { if (ms == std::chrono::milliseconds ::max()) @@ -84,7 +85,7 @@ CO_TEST_CASE("variadic-throw") CO_TEST_CASE("list") { auto exec = co_await asio::this_coro::executor; - std::vector> vec; + std::vector> vec; vec.push_back(wdummy(exec, std::chrono::milliseconds(100))); vec.push_back(wdummy(exec, std::chrono::milliseconds( 50))); vec.push_back(wdummy(exec, std::chrono::milliseconds(150))); diff --git a/test/left_race.cpp b/test/left_race.cpp index 32aedadc..5798afd2 100644 --- a/test/left_race.cpp +++ b/test/left_race.cpp @@ -18,7 +18,8 @@ using namespace boost; -static cobalt::promise dummy(asio::any_io_executor exec, +static cobalt::promise dummy( + asio::any_io_executor exec, std::chrono::milliseconds ms = std::chrono::milliseconds(50)) { asio::steady_timer tim{exec, ms}; @@ -61,7 +62,7 @@ CO_TEST_CASE("variadic") CO_TEST_CASE("list") { auto exec = co_await asio::this_coro::executor; - std::vector> vec; + std::vector> vec; vec.push_back(dummy(exec, std::chrono::milliseconds(100))); vec.push_back(dummy(exec, std::chrono::milliseconds( 50))); vec.push_back(dummy(exec, std::chrono::milliseconds(100000))); diff --git a/test/race.cpp b/test/race.cpp index 748ba9f1..1721872a 100644 --- a/test/race.cpp +++ b/test/race.cpp @@ -18,7 +18,8 @@ using namespace boost; -static cobalt::promise dummy(asio::any_io_executor exec, +static cobalt::promise dummy( + asio::any_io_executor exec, std::chrono::milliseconds ms = std::chrono::milliseconds(50)) { asio::steady_timer tim{exec, ms}; @@ -27,8 +28,9 @@ static cobalt::promise dummy(asio::any_io_executor exec, } -static cobalt::promise nothrow_dummy(asio::any_io_executor exec, - std::chrono::milliseconds ms = std::chrono::milliseconds(50)) +static cobalt::promise nothrow_dummy( + asio::any_io_executor exec, + std::chrono::milliseconds ms = std::chrono::milliseconds(50)) try { asio::steady_timer tim{exec, ms}; co_await tim.async_wait(cobalt::use_op); @@ -36,7 +38,7 @@ try { } catch(...) { - co_return std::numeric_limits::max(); + co_return std::numeric_limits::max(); } static cobalt::generator gen(asio::any_io_executor exec) @@ -89,7 +91,7 @@ CO_TEST_CASE("list") std::mt19937 src{seed}; auto exec = co_await asio::this_coro::executor; - std::vector> vec; + std::vector> vec; vec.push_back(dummy(exec, std::chrono::milliseconds(100))); vec.push_back(dummy(exec, std::chrono::milliseconds( 50))); vec.push_back(dummy(exec, std::chrono::milliseconds(100000))); diff --git a/test/wait_group.cpp b/test/wait_group.cpp index 7b8d9344..f3f3b5b4 100644 --- a/test/wait_group.cpp +++ b/test/wait_group.cpp @@ -35,7 +35,7 @@ CO_TEST_CASE("grp") { auto e = co_await cobalt::this_coro::executor; - using std::chrono::operator""ms; + using namespace std; cobalt::wait_group wg; wg.push_back(gdelay(e));