From eb8528c90e3a09e4bde80c4b26808f1debcf04f7 Mon Sep 17 00:00:00 2001 From: Denis Blank Date: Thu, 28 Sep 2017 05:23:21 +0200 Subject: [PATCH] Move unused to util --- examples/documentation/example-documentation.cpp | 7 +++++-- include/continuable/continuable-testing.hpp | 6 +++--- include/continuable/detail/traits.hpp | 12 ------------ include/continuable/detail/util.hpp | 12 ++++++++++++ 4 files changed, 20 insertions(+), 17 deletions(-) diff --git a/examples/documentation/example-documentation.cpp b/examples/documentation/example-documentation.cpp index f744a6c..28e9cf5 100644 --- a/examples/documentation/example-documentation.cpp +++ b/examples/documentation/example-documentation.cpp @@ -20,7 +20,8 @@ SOFTWARE. **/ -#include "continuable/continuable.hpp" +#include +#include using cti::detail::util::unused; @@ -40,7 +41,9 @@ void creating_continuables() { } struct ResultSet {}; -template void mysql_handle_async_query(Args&&...) {} +template +void mysql_handle_async_query(Args&&...) { +} auto mysql_query(std::string query) { return cti::make_continuable([query = std::move(query)]( diff --git a/include/continuable/continuable-testing.hpp b/include/continuable/continuable-testing.hpp index 79cc283..7a22347 100644 --- a/include/continuable/continuable-testing.hpp +++ b/include/continuable/continuable-testing.hpp @@ -45,7 +45,7 @@ template void assert_async_completion(C&& continuable) { *called = true; // Workaround for our known GCC bug. - traits::unused(std::forward(args)...); + util::unused(std::forward(args)...); }); ASSERT_TRUE(*called); } @@ -53,7 +53,7 @@ template void assert_async_completion(C&& continuable) { template void assert_async_never_completed(C&& continuable) { std::forward(continuable).then([](auto&&... args) { // Workaround for our known GCC bug. - traits::unused(std::forward(args)...); + util::unused(std::forward(args)...); FAIL(); }); @@ -111,7 +111,7 @@ void assert_async_types(C&& continuable, traits::identity expected) { assert_async_validation( std::forward(continuable), [&](auto... actualPack) { auto actual = traits::identity{}; - traits::unused(expected, actual, + util::unused(expected, actual, std::forward(actualPack)...); static_assert( diff --git a/include/continuable/detail/traits.hpp b/include/continuable/detail/traits.hpp index 2adba4f..2d31a43 100644 --- a/include/continuable/detail/traits.hpp +++ b/include/continuable/detail/traits.hpp @@ -159,18 +159,6 @@ constexpr auto get(identity) noexcept { return identity_of>(); } -/// Helper to trick compilers about that a parameter pack is used -template -void unused(T&&... args) { - auto use = [](auto&& type) mutable { - (void)type; - return 0; - }; - auto deduce = {0, use(std::forward(args))...}; - (void)deduce; - (void)use; -} - namespace detail { // Equivalent to C++17's std::void_t which targets a bug in GCC, // that prevents correct SFINAE behavior. diff --git a/include/continuable/detail/util.hpp b/include/continuable/detail/util.hpp index 79d4407..d98ab39 100644 --- a/include/continuable/detail/util.hpp +++ b/include/continuable/detail/util.hpp @@ -43,6 +43,18 @@ namespace cti { namespace detail { /// Utility namespace which provides useful meta-programming support namespace util { +/// Helper to trick compilers about that a parameter pack is used +template +void unused(T&&... args) { + auto use = [](auto&& type) mutable { + (void)type; + return 0; + }; + auto deduce = {0, use(std::forward(args))...}; + (void)deduce; + (void)use; +} + namespace detail { template > struct is_invokable_impl : std::common_type {};