Fix the asio example

* Attempt to fix the GCC warning in a different way
This commit is contained in:
Denis Blank 2019-09-02 01:03:28 +02:00
parent 7aff2c0d9b
commit ffb3db7089
3 changed files with 23 additions and 35 deletions

View File

@ -67,7 +67,11 @@ struct functional_io_service {
auto trough_post() noexcept { auto trough_post() noexcept {
return [&](auto&& work) mutable { return [&](auto&& work) mutable {
asio::post(service_, std::forward<decltype(work)>(work)); asio::post(service_,
[work = std::forward<decltype(work)>(work)]() mutable {
std::move(work)();
// .. or: work.set_value();
});
}; };
} }

View File

@ -62,15 +62,7 @@ using unique_type = result<std::unique_ptr<int>>;
using result_test_types = testing::Types<unique_type, copyable_type>; using result_test_types = testing::Types<unique_type, copyable_type>;
// https://github.com/google/googletest/issues/2271 TYPED_TEST_SUITE(result_all_tests, result_test_types, name_generator);
#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wgnu-zero-variadic-macro-arguments"
#endif
TYPED_TEST_SUITE(result_all_tests, result_test_types);
#ifdef __GNUC__
#pragma GCC diagnostic pop
#endif
TYPED_TEST(result_all_tests, is_default_constructible) { TYPED_TEST(result_all_tests, is_default_constructible) {
TypeParam e; TypeParam e;

View File

@ -33,6 +33,7 @@
#include <continuable/continuable-base.hpp> #include <continuable/continuable-base.hpp>
#include <continuable/continuable-testing.hpp> #include <continuable/continuable-testing.hpp>
#include <continuable/continuable.hpp> #include <continuable/continuable.hpp>
#include <string>
using cti::detail::identity; using cti::detail::identity;
using cti::detail::util::unused; using cti::detail::util::unused;
@ -48,7 +49,7 @@ auto to_hint(identity<Args...> hint) {
template <typename... Args> template <typename... Args>
auto supplier_of(Args&&... args) { auto supplier_of(Args&&... args) {
return [values = std::make_tuple(std::forward<Args>(args)...)]( return [values = std::make_tuple(std::forward<Args>(args)...)](
auto&& promise) mutable { auto&& promise) mutable {
EXPECT_TRUE(promise); EXPECT_TRUE(promise);
cti::detail::traits::unpack( cti::detail::traits::unpack(
[&](auto&&... passed) { [&](auto&&... passed) {
@ -115,12 +116,12 @@ struct provide_copyable {
struct provide_unique { struct provide_unique {
template <typename... Args, typename... Hint, typename T> template <typename... Args, typename... Hint, typename T>
auto make(identity<Args...>, identity<Hint...>, T&& callback) { auto make(identity<Args...>, identity<Hint...>, T&& callback) {
return cti::make_continuable<Hint...>([ return cti::make_continuable<Hint...>(
callback = std::forward<T>(callback), guard = std::make_unique<int>(0) [callback = std::forward<T>(callback),
](auto&&... args) mutable { guard = std::make_unique<int>(0)](auto&&... args) mutable {
(void)(*guard); (void)(*guard);
return std::move(callback)(std::forward<decltype(args)>(args)...); return std::move(callback)(std::forward<decltype(args)>(args)...);
}); });
} }
}; };
@ -205,18 +206,17 @@ struct tag1 {};
struct tag2 {}; struct tag2 {};
struct tag3 {}; struct tag3 {};
struct name_generator {
template <typename T>
static std::string GetName(int i) {
return std::to_string(i);
}
};
template <typename Provider> template <typename Provider>
struct single_dimension_tests : continuation_provider<Provider> {}; struct single_dimension_tests : continuation_provider<Provider> {};
// https://github.com/google/googletest/issues/2271 TYPED_TEST_SUITE(single_dimension_tests, single_types, name_generator);
#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wgnu-zero-variadic-macro-arguments"
#endif
TYPED_TEST_SUITE(single_dimension_tests, single_types);
#ifdef __GNUC__
#pragma GCC diagnostic pop
#endif
template <typename T, typename First, typename Second> template <typename T, typename First, typename Second>
struct combine_to_type; struct combine_to_type;
@ -258,15 +258,7 @@ struct single_aggregate_tests<identity<Provider, Connector>>
: continuation_provider<Provider>, Connector {}; : continuation_provider<Provider>, Connector {};
// https://github.com/google/googletest/issues/2271 TYPED_TEST_SUITE(single_aggregate_tests, aggregate_types, name_generator);
#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wgnu-zero-variadic-macro-arguments"
#endif
TYPED_TEST_SUITE(single_aggregate_tests, aggregate_types);
#ifdef __GNUC__
#pragma GCC diagnostic pop
#endif
template <typename T> template <typename T>
auto make_step(T* me, unsigned& current, unsigned step) { auto make_step(T* me, unsigned& current, unsigned step) {