mirror of
https://github.com/boostorg/beast.git
synced 2025-07-30 12:57:31 +02:00
Add is_mutable_body_writer metafunction
This commit is contained in:
@ -8,6 +8,7 @@ Version 170:
|
|||||||
* Use a shared string for example HTTP server doc roots
|
* Use a shared string for example HTTP server doc roots
|
||||||
* Remove deprecated serializer::reader_impl()
|
* Remove deprecated serializer::reader_impl()
|
||||||
* Remove deprecated Body reader and writer ctor signatures
|
* Remove deprecated Body reader and writer ctor signatures
|
||||||
|
* Add is_mutable_body_writer metafunction
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -114,6 +114,7 @@
|
|||||||
<member><link linkend="beast.ref.boost__beast__http__is_body_reader">is_body_reader</link></member>
|
<member><link linkend="beast.ref.boost__beast__http__is_body_reader">is_body_reader</link></member>
|
||||||
<member><link linkend="beast.ref.boost__beast__http__is_body_writer">is_body_writer</link></member>
|
<member><link linkend="beast.ref.boost__beast__http__is_body_writer">is_body_writer</link></member>
|
||||||
<member><link linkend="beast.ref.boost__beast__http__is_fields">is_fields</link></member>
|
<member><link linkend="beast.ref.boost__beast__http__is_fields">is_fields</link></member>
|
||||||
|
<member><link linkend="beast.ref.boost__beast__http__is_mutable_body_writer">is_mutable_body_writer</link></member>
|
||||||
</simplelist>
|
</simplelist>
|
||||||
<bridgehead renderas="sect3">Concepts</bridgehead>
|
<bridgehead renderas="sect3">Concepts</bridgehead>
|
||||||
<simplelist type="vert" columns="1">
|
<simplelist type="vert" columns="1">
|
||||||
|
@ -100,6 +100,43 @@ struct is_body_writer<T, beast::detail::void_t<
|
|||||||
> {};
|
> {};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/** Returns true if the writer for a @b Body mutates the body container.
|
||||||
|
*/
|
||||||
|
#if BOOST_BEAST_DOXYGEN
|
||||||
|
template<class T>
|
||||||
|
struct is_mutable_body_writer : std::integral_constant<bool, ...> {};
|
||||||
|
#else
|
||||||
|
template<class T, class = void>
|
||||||
|
struct is_mutable_body_writer : std::false_type {};
|
||||||
|
|
||||||
|
template<class T>
|
||||||
|
struct is_mutable_body_writer<T, beast::detail::void_t<
|
||||||
|
typename T::writer,
|
||||||
|
typename T::writer::const_buffers_type,
|
||||||
|
decltype(
|
||||||
|
std::declval<typename T::writer&>().init(std::declval<error_code&>()),
|
||||||
|
std::declval<boost::optional<std::pair<
|
||||||
|
typename T::writer::const_buffers_type, bool>>&>() =
|
||||||
|
std::declval<typename T::writer>().get(std::declval<error_code&>())
|
||||||
|
)>> : std::integral_constant<bool,
|
||||||
|
boost::asio::is_const_buffer_sequence<
|
||||||
|
typename T::writer::const_buffers_type>::value && ((
|
||||||
|
std::is_constructible<typename T::writer,
|
||||||
|
header<true, detail::fields_model>&,
|
||||||
|
typename T::value_type&>::value &&
|
||||||
|
std::is_constructible<typename T::writer,
|
||||||
|
header<false, detail::fields_model>&,
|
||||||
|
typename T::value_type&>::value &&
|
||||||
|
! std::is_constructible<typename T::writer,
|
||||||
|
header<true, detail::fields_model> const&,
|
||||||
|
typename T::value_type const&>::value &&
|
||||||
|
! std::is_constructible<typename T::writer,
|
||||||
|
header<false, detail::fields_model> const&,
|
||||||
|
typename T::value_type const&>::value
|
||||||
|
))
|
||||||
|
>{};
|
||||||
|
#endif
|
||||||
|
|
||||||
/** Determine if a @b Body type has a reader.
|
/** Determine if a @b Body type has a reader.
|
||||||
|
|
||||||
This metafunction is equivalent to `std::true_type` if:
|
This metafunction is equivalent to `std::true_type` if:
|
||||||
|
Reference in New Issue
Block a user