Bumping language requirement to C++14 #131
Replies: 3 comments
|
*crickets* Heh, I guess former CppWAMP users must have moved on to other libraries/technologies. 😄 |
|
The problem goes deeper than I've stumbled upon this issue report where the author of Boost.Beast says that I've made a feature request for a type-erased asynchronous handler wrapper on the Asio GitHub issue tracker: chriskohlhoff/asio#1100 I cross-posted the same feature request to the C++ proposals mailing list: https://lists.isocpp.org/std-proposals/2022/07/4223.php |
|
I ended up having to write my own async handler wrapper and did not need C++14. I'll be keeping CppWAMP's language requirements at C++11 unless something comes up that forces me to increase it. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
UPDATE: I no longer need to bump the language requirements and can keep them at C++11.
I'm trying to get C++20 coroutines to work in my
completion-tokensdevelopment branch, and have run into the problem that it's impossible to store a Boostawaitable_handlerin astd::functiondue to the former being move-only.I want the type erasure provided by
std::function, as this allows CppWAMP to be compiled as a static library. Our parent project that uses CppWAMP is already slow to compile, so I'm not in favor of making CppWAMP purely header-only.I therefore need an implementation similar to C++23's
std::move_only_function. The best I could find wasfu2::unique_functionfrom https://github.com/Naios/function2, but it requires C++14. I don't have time to write my own production-qualitymove_only_function, so I'd prefer to usefu2::unique_function.I could wrap the
awaitable_handlerin astd::shared_ptras was done by a CppWAMP user who made their own adapter to use C++20 coroutines with CppWAMP. However, I am concerned with the efficiency of this approach, which does not have the small buffer optimization featured bystd::functionand the like.Naios/function2 is a single header that's also Boost-licensed, so I would simply bundle it with CppWAMP and provide credit in the README. I'll provide a preprocessor mechanism that allows users to supply their own
function2.hppheader.I'm therefore strongly considering bumping the the language requirements for CppWAMP to C++14. Doing so would provide these additional maintenance benefits:
CPPWAMP_MVCAPmacro)DoConnect,DoJoin, etc functors in Session-> decltype(initiate<DoConnect>(std::forward<C>(completion)))messstd::integer_sequenceinstead of DIY varietyPlease note that supporting C++20 coroutines does not imply that the minimum language requirements for CppWAMP will also be C++20. Only C++20 coroutine users will have the requirement of a C++20 compiler.
All reactions