close#1574
This change yields a modest performance improment of 1-2% by replacing
the exception-based handling of buffer overflow with one based on
regular conditional checks.
Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
close#1570
`std::launder` must be used whenever placement-new of an unknown type
is performed and the result of the placement-new expression is discarded.
Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
`complete(false, ...)` used the wrong executor when an async operation
completed immediately, potentially executing the completion handler on
the IO executor in some cases.
Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>
The ANDROID define us usually originationg from he build system
(like CMake, ndk-build, etc.). But some buildsystems like Bazel
do not set it which brakes Android platform detection.
Better use __ANDROID__ (like boost predef does) which is
predefined by the compiler if targeting Android.
* dynamic_buffer_ref is removed, because Asio / Networking
has introduced the DynamicBuffer_v2 concept which is incompatible
with Beast's storage types.
The next version of Beast (1.70) will provide changes to
interoperate with Asio / Networking's new concepts.
* `basic_parser` now uses pure virtual member functions instead
of the curiously recurring template pattern.
Actions Required:
* Change uses of the `basic_parser` type to omit the `Derived`
template parameter
* Classes derived from `basic_parser` no longer need to friend
the base.
* Virtual functions in the derived class may be marked `override`.