From 96c9f7af992553550f21c73366996c7901a9953f Mon Sep 17 00:00:00 2001 From: Denis Blank Date: Tue, 25 Dec 2018 11:12:11 +0100 Subject: [PATCH] More --- include/continuable/continuable-base.hpp | 2 +- include/continuable/continuable-coroutine.hpp | 2 +- .../continuable/continuable-primitives.hpp | 8 ++ .../continuable/continuable-promise-base.hpp | 2 +- include/continuable/continuable-testing.hpp | 2 +- include/continuable/continuable-trait.hpp | 11 +- include/continuable/continuable-types.hpp | 65 ++++-------- include/continuable/continuable.hpp | 1 - .../connection/connection-aggregated.hpp | 26 ++--- .../detail/connection/connection-any.hpp | 18 ++-- .../continuable/detail/core/annotation.hpp | 6 +- include/continuable/detail/core/base.hpp | 100 +++++++++--------- include/continuable/detail/core/types.hpp | 1 + .../continuable/detail/other/coroutines.hpp | 4 +- include/continuable/detail/other/erasure.hpp | 97 +++++++++++++++++ include/continuable/detail/other/testing.hpp | 6 +- .../continuable/detail/other/transforms.hpp | 4 +- .../detail/utility/flat-variant.hpp | 4 +- .../continuable/detail/utility/identity.hpp | 54 ++++++++++ include/continuable/detail/utility/traits.hpp | 14 +-- .../multi/test-continuable-base-errors.cpp | 2 +- test/unit-test/test-continuable.hpp | 16 +-- 22 files changed, 282 insertions(+), 163 deletions(-) create mode 100644 include/continuable/detail/other/erasure.hpp create mode 100644 include/continuable/detail/utility/identity.hpp diff --git a/include/continuable/continuable-base.hpp b/include/continuable/continuable-base.hpp index 9a7039e..ae7889c 100644 --- a/include/continuable/continuable-base.hpp +++ b/include/continuable/continuable-base.hpp @@ -835,7 +835,7 @@ constexpr auto make_continuable(Continuation&& continuation) { template auto make_ready_continuable(Args&&... args) { using detail::base::ready_continuation; - using detail::traits::identity; + using detail::identity; using detail::traits::unrefcv_t; return detail::base::attorney::create_from_raw( ready_continuation...>{std::forward(args)...}, diff --git a/include/continuable/continuable-coroutine.hpp b/include/continuable/continuable-coroutine.hpp index fdd21fd..ee1680d 100644 --- a/include/continuable/continuable-coroutine.hpp +++ b/include/continuable/continuable-coroutine.hpp @@ -51,7 +51,7 @@ namespace std { namespace experimental { template struct coroutine_traits< - cti::continuable_base>, + cti::continuable_base>, FunctionArgs...> { using promise_type = diff --git a/include/continuable/continuable-primitives.hpp b/include/continuable/continuable-primitives.hpp index 054eb11..de26dda 100644 --- a/include/continuable/continuable-primitives.hpp +++ b/include/continuable/continuable-primitives.hpp @@ -32,6 +32,7 @@ #define CONTINUABLE_PRIMITIVES_HPP_INCLUDED #include +#include namespace cti { /// \defgroup Primitives Primitives @@ -56,6 +57,13 @@ namespace cti { /// ``` /// \{ +/// Represents the tag type that is used to specify the signature hint +/// of a continuable_base or promise_base. +/// +/// \since 4.0.0 +template +using signature_arg_t = detail::identity; + /// Represents the tag type that is used to query the continuation /// for whether it resolves the callback instantly with its arguments /// without having side effects. diff --git a/include/continuable/continuable-promise-base.hpp b/include/continuable/continuable-promise-base.hpp index fa4780f..de72523 100644 --- a/include/continuable/continuable-promise-base.hpp +++ b/include/continuable/continuable-promise-base.hpp @@ -62,7 +62,7 @@ class promise_base /// \cond false ; template -class promise_base> +class promise_base> : detail::util::non_copyable /// \endcond { // clang-format on diff --git a/include/continuable/continuable-testing.hpp b/include/continuable/continuable-testing.hpp index df9847a..34e8710 100644 --- a/include/continuable/continuable-testing.hpp +++ b/include/continuable/continuable-testing.hpp @@ -158,7 +158,7 @@ /// \since 1.0.0 #define ASSERT_ASYNC_TYPES(CONTINUABLE, ...) \ cti::detail::testing::assert_async_types( \ - CONTINUABLE, cti::detail::traits::identity<__VA_ARGS__>{}) + CONTINUABLE, cti::detail::identity<__VA_ARGS__>{}) /// Asserts that the continuable is finished with the given exception /// diff --git a/include/continuable/continuable-trait.hpp b/include/continuable/continuable-trait.hpp index 7d42080..1918002 100644 --- a/include/continuable/continuable-trait.hpp +++ b/include/continuable/continuable-trait.hpp @@ -59,17 +59,12 @@ namespace cti { template