diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 37c9006..4949064 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -117,6 +117,16 @@ jobs: fail-fast: false matrix: include: + - toolset: g++-9 + compiler: g++-9 + install: g++-9 + os: ubuntu-latest + container: ubuntu:22.04 + build-type: 'Release' + cxxstd: 17 + cxxflags: '' + ldflags: '' + - toolset: g++-10 compiler: g++-10 install: g++-10 diff --git a/README.md b/README.md index 5646731..4cddc5e 100644 --- a/README.md +++ b/README.md @@ -89,10 +89,10 @@ To see more examples, visit [Examples](https://github.com/mireo/async-mqtt5/tree Building with CMake --------- You can use the `CMakeLists.txt` provided in our repository to compile and run any of the [examples](https://github.com/mireo/async-mqtt5/tree/master/example) or your own source files. -The following commands demonstrate compiling and running the previous code using CMake. +The following commands demonstrate compiling and running the previous code using CMake on Linux. The source file is located at [example/hello_world_over_tcp.cpp](https://github.com/mireo/async-mqtt5/blob/master/example/hello_world_over_tcp.cpp). -``` +```bash # navigate to the root folder of Async.MQTT5 # compile the example @@ -129,7 +129,7 @@ Async.MQTT5 is a header-only library. To use Async.MQTT5 it requires the followi Async.MQTT5 has been tested with the following compilers: - clang 12.0, 13.0, 14.0, 15.0 (Linux) -- GCC 10, 11, 12 (Linux) +- GCC 9, 10, 11, 12 (Linux) - MSVC 14.37 - Visual Studio 2022 (Windows) Contributing diff --git a/doc/qbk/01_intro.qbk b/doc/qbk/01_intro.qbk index e4e430c..6748810 100644 --- a/doc/qbk/01_intro.qbk +++ b/doc/qbk/01_intro.qbk @@ -81,7 +81,7 @@ To see more examples, visit [link async_mqtt5.examples Examples]. [heading Building with CMake] You can use the `CMakeLists.txt` provided in our repository to compile and run any of the [link async_mqtt5.examples examples] or your own source files. -The following commands demonstrate compiling and running the previous code using CMake. +The following commands demonstrate compiling and running the previous code using CMake on Linux. The source file is located at [ghreflink example/hello_world_over_tcp.cpp example/hello_world_over_tcp.cpp]. # navigate to the root folder of Async.MQTT5 @@ -122,7 +122,7 @@ To use __Self__ it requires the following: __Self__ has been tested with the following compilers: * clang 12.0, 13.0, 14.0, 15.0 (Linux) -* GCC 10, 11, 12 (Linux) +* GCC 9, 10, 11, 12 (Linux) * MSVC 14.37 - Visual Studio 2022 (Windows) [heading Acknowledgements] diff --git a/include/async_mqtt5/detail/async_mutex.hpp b/include/async_mqtt5/detail/async_mutex.hpp index ac050ef..fb32f4b 100644 --- a/include/async_mqtt5/detail/async_mutex.hpp +++ b/include/async_mqtt5/detail/async_mutex.hpp @@ -34,11 +34,10 @@ private: Handler _handler; public: tracked_op(Handler&& h, const Executor& ex) : - _executor(tracking_executor(h, ex)), - _handler(std::move(h)) + _executor(tracking_executor(h, ex)), _handler(std::move(h)) {} - tracked_op(tracked_op&&) noexcept = default; + tracked_op(tracked_op&&) = default; tracked_op(const tracked_op&) = delete; using executor_type = tracking_type; diff --git a/include/async_mqtt5/detail/cancellable_handler.hpp b/include/async_mqtt5/detail/cancellable_handler.hpp index 5f82507..c359940 100644 --- a/include/async_mqtt5/detail/cancellable_handler.hpp +++ b/include/async_mqtt5/detail/cancellable_handler.hpp @@ -31,7 +31,7 @@ public: ) {} - cancellable_handler(cancellable_handler&& other) noexcept = default; + cancellable_handler(cancellable_handler&&) = default; cancellable_handler(const cancellable_handler&) = delete; using executor_type = tracking_type; diff --git a/include/async_mqtt5/impl/disconnect_op.hpp b/include/async_mqtt5/impl/disconnect_op.hpp index 979677f..016eda3 100644 --- a/include/async_mqtt5/impl/disconnect_op.hpp +++ b/include/async_mqtt5/impl/disconnect_op.hpp @@ -45,8 +45,7 @@ public: const std::shared_ptr& svc_ptr, DisconnectContext&& context, Handler&& handler ) : - _svc_ptr(svc_ptr), - _context(std::move(context)), + _svc_ptr(svc_ptr), _context(std::move(context)), _handler(std::move(handler), _svc_ptr->get_executor()) { auto slot = asio::get_associated_cancellation_slot(_handler); @@ -56,7 +55,7 @@ public: }); } - disconnect_op(disconnect_op&&) noexcept = default; + disconnect_op(disconnect_op&&) = default; disconnect_op(const disconnect_op&) = delete; using executor_type = asio::associated_executor_t; @@ -185,7 +184,7 @@ public: _handler(std::move(handler), _svc_ptr->get_executor()) {} - terminal_disconnect_op(terminal_disconnect_op&&) noexcept = default; + terminal_disconnect_op(terminal_disconnect_op&&) = default; terminal_disconnect_op(const terminal_disconnect_op&) = delete; using executor_type = asio::associated_executor_t; diff --git a/include/async_mqtt5/impl/endpoints.hpp b/include/async_mqtt5/impl/endpoints.hpp index f9e08be..1a9efac 100644 --- a/include/async_mqtt5/impl/endpoints.hpp +++ b/include/async_mqtt5/impl/endpoints.hpp @@ -33,7 +33,7 @@ public: _owner(owner), _handler(std::move(handler)) {} - resolve_op(resolve_op&&) noexcept = default; + resolve_op(resolve_op&&) = default; resolve_op(const resolve_op&) = delete; using executor_type = asio::associated_executor_t; diff --git a/include/async_mqtt5/impl/publish_send_op.hpp b/include/async_mqtt5/impl/publish_send_op.hpp index af8e185..4818b67 100644 --- a/include/async_mqtt5/impl/publish_send_op.hpp +++ b/include/async_mqtt5/impl/publish_send_op.hpp @@ -79,7 +79,7 @@ public: }); } - publish_send_op(publish_send_op&&) noexcept = default; + publish_send_op(publish_send_op&& other) = default; publish_send_op(const publish_send_op&) = delete; using executor_type = asio::associated_executor_t; diff --git a/include/async_mqtt5/impl/read_op.hpp b/include/async_mqtt5/impl/read_op.hpp index 9774094..ffb5064 100644 --- a/include/async_mqtt5/impl/read_op.hpp +++ b/include/async_mqtt5/impl/read_op.hpp @@ -30,7 +30,7 @@ public: _handler(std::move(handler)) {} - read_op(read_op&&) noexcept = default; + read_op(read_op&&) = default; read_op(const read_op&) = delete; using executor_type = asio::associated_executor_t; diff --git a/include/async_mqtt5/impl/reconnect_op.hpp b/include/async_mqtt5/impl/reconnect_op.hpp index be3d3de..cd4a69a 100644 --- a/include/async_mqtt5/impl/reconnect_op.hpp +++ b/include/async_mqtt5/impl/reconnect_op.hpp @@ -66,7 +66,7 @@ public: _handler(std::forward(handler)) {} - reconnect_op(reconnect_op&&) noexcept = default; + reconnect_op(reconnect_op&&) = default; reconnect_op(const reconnect_op&) = delete; using executor_type = asio::associated_executor_t; diff --git a/include/async_mqtt5/impl/subscribe_op.hpp b/include/async_mqtt5/impl/subscribe_op.hpp index 7829b32..1130cc0 100644 --- a/include/async_mqtt5/impl/subscribe_op.hpp +++ b/include/async_mqtt5/impl/subscribe_op.hpp @@ -56,8 +56,8 @@ public: }); } - subscribe_op(subscribe_op&&) noexcept = default; - subscribe_op(const subscribe_op&) noexcept = delete; + subscribe_op(subscribe_op&&) = default; + subscribe_op(const subscribe_op&) = delete; using executor_type = asio::associated_executor_t; executor_type get_executor() const noexcept { diff --git a/include/async_mqtt5/impl/unsubscribe_op.hpp b/include/async_mqtt5/impl/unsubscribe_op.hpp index 54f6e0d..7eb716a 100644 --- a/include/async_mqtt5/impl/unsubscribe_op.hpp +++ b/include/async_mqtt5/impl/unsubscribe_op.hpp @@ -51,8 +51,8 @@ public: }); } - unsubscribe_op(unsubscribe_op&&) noexcept = default; - unsubscribe_op(const unsubscribe_op&) noexcept = delete; + unsubscribe_op(unsubscribe_op&&) = default; + unsubscribe_op(const unsubscribe_op&) = delete; using executor_type = asio::associated_executor_t; executor_type get_executor() const noexcept { diff --git a/include/async_mqtt5/impl/write_op.hpp b/include/async_mqtt5/impl/write_op.hpp index b001815..249c45e 100644 --- a/include/async_mqtt5/impl/write_op.hpp +++ b/include/async_mqtt5/impl/write_op.hpp @@ -22,11 +22,10 @@ class write_op { public: write_op(Owner& owner, Handler&& handler) : - _owner(owner), - _handler(std::move(handler)) + _owner(owner), _handler(std::move(handler)) {} - write_op(write_op&&) noexcept = default; + write_op(write_op&&) = default; write_op(const write_op&) = delete; using executor_type = asio::associated_executor_t; diff --git a/test/include/test_common/delayed_op.hpp b/test/include/test_common/delayed_op.hpp index f332fb1..427dff5 100644 --- a/test/include/test_common/delayed_op.hpp +++ b/test/include/test_common/delayed_op.hpp @@ -40,7 +40,7 @@ public: _args(std::move(args)...) {} - delayed_op(delayed_op&&) noexcept = default; + delayed_op(delayed_op&&) = default; delayed_op(const delayed_op&) = delete; using executor_type = asio::steady_timer::executor_type; diff --git a/test/include/test_common/test_stream.hpp b/test/include/test_common/test_stream.hpp index 1072eab..42d3a5b 100644 --- a/test/include/test_common/test_stream.hpp +++ b/test/include/test_common/test_stream.hpp @@ -118,7 +118,7 @@ public: }); } - read_op(read_op&&) noexcept = default; + read_op(read_op&&) = default; read_op(const read_op&) = delete; using executor_type = test_stream_impl::executor_type; @@ -173,7 +173,7 @@ public: _handler(std::move(handler)) {} - write_op(write_op&&) noexcept = default; + write_op(write_op&&) = default; write_op(const write_op&) = delete; using executor_type = test_stream_impl::executor_type;